java - Clob 对象数据为空
问题描述
我有一个超过 5000 个字符的字符串,我想用 MyBatis 将其保存为 XMLTYPE。为此,我执行以下操作:
将 String 转换为 CLOB,CLOB 使用它通过构造函数将其保存在数据库中:XMLTYPE.CREATEXML。
将字符串转换为 CLOB 时出现问题。
如果我按照第一种方式创建,则创建的 CLOB 对象是 SerialClob,它有 3 个字段:BUF、LENG 和 CLOB;但是这三个字段中只有两个被填充:BUF(缓冲区)和 LENG,但 CLOB 为空。
但是,如果我以第二种方式执行此操作,我将创建完整的 CLOB 对象,其中包含所有字符串,并且将其保存在数据库中没有问题。但我创建的第一种方法是 SerialClob,它不允许将其保存在 XMLTYPE 中。
我不能将 XMLTYPE 构造函数与 VARCHARS 一起使用,因为我的 String 有超过 4000 个字符。
有没有无需打开连接的替代方法?
Clob myClobFile;
String str = "<myString example></end of example>";
第一种方式:
try
{
myClobFile= new javax.sql.rowset.serial.SerialClob (str.toCharArray ());
}
第二种方式:
try
{
myClobFile= sqlSession.getConnection ().createClob ();
myClobFile.setString (1, str);
}
解决方案
我资助了一个解决方案:
public static Clob stringToClob (SqlSession sqlSession, String str) throws SQLException
{
Clob myRet = null;
try
{
myRet = sqlSession.getConnection ().createClob ();
myRet.setString (1, str);
}
catch (SQLException e)
{
...trows
}
return myRet;
}
我使用该解决方案是因为在调试代码时,在数组应该是(在 clob 中)的部分中,它是一个空数组。尝试将位数组格式化成clob,然后把这个对象传给mybatis的时候肯定有问题。
推荐阅读
- date - Power Bi,Dax 语法从具有重复日期的列中减去带有条件的 TODAY 日期
- android - 房间数据库:java.lang.reflect.InvocationTargetException
- java - 将特殊字符写入 yaml 文件
- mysql - 无法从 Python 3.8 连接到 MySQL 8
- javascript - 使用 JavaScript 显示特定时区的实时时间
- field - Tableau 使用带有月度数据的现场季度记录
- python-3.x - 在链表中检测循环/循环的不同方法
- ios - 用计时器解除 UIAlertController
- python - 如何在 Selenium 中单击班级孩子的最后一个按钮
- kde - 意外关闭manjaro后如何继续调整分区大小