我正在更新我的 Oracle 数据库中的 CLOB 列。参数化的 SQL 看起来像是正确执行而没有错误,但是当我运行 select 来查看更改时,它还没有更新。注意:MyBatis 3 是使用 JDBC 参数化查询构建的,所以这些规则也适用。
MyBatis 映射:
<update id="updateRSA103RequestData" parameterType="com.company.domain.RSA103XMLData" flushCache="true">
update
RSA_SUBMIT_DATA
set TXLIFE_REQUEST = #{request}
where RSA_SUBMIT_QUEUE_ID = #{id}
</update>
运行时日志:
2012-07-13 12:35:26,728 调试连接:线程主:-ooo
连接已打开 2012-07-13 12:35:26,837 调试
PreparedStatement:线程主:- ==> 执行:更新
RSA_SUBMIT_DATA 设置 TXLIFE_REQUEST = ?哪里 RSA_SUBMIT_QUEUE_ID = ?
2012-07-13 12:35:26,837 DEBUG PreparedStatement:Thread main: - ==>
参数:testasdfasdf(String), 51(Integer) 2012-07-13 12:35:27,024
DEBUG Connection:Thread main: - xxx Connection关闭
更改后选择查询:
select *
from RSA_SUBMIT_DATA
where RSA_SUBMIT_QUEUE_ID = 51
RSA_SUBMIT_QUEUE_ID | TXLIFE_REQUEST | TXLIFE_RESPONSE
51 | originalString | resultString
映射器调用:
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
log.debug("autoCommit: " + sqlSessionFactory.getConfiguration().getEnvironment().getDataSource().getConnection().getAutoCommit());
PolicyTransactionMapper policyTransactionDAO = sqlSession
.getMapper(PolicyTransactionMapper.class);
RSA103XMLData xmlData = new RSA103XMLData();
xmlData.setId(rsaSubmitQueueID);
xmlData.setRequest(request);
policyTransactionDAO.updateRSA103RequestData(xmlData);
任何帮助表示赞赏。