由于最近要用ibatis操作Oracle的CLOB字段,结合以前的牛人发布的用ibatis操作clob字段的经验,发现以前的方法如今不再合适,现在操作CLOB字段变得更简单了。下面说下我是如何操作的。
1、jar包 我用的ibatis-2.3.4.726.jar,oracle-11g.jar(oracle11g的jar包,名字自己改了下的)
2、数据结构
Sql代码
CREATETABLE"M_MODEL"(
"MODELID"VARCHAR2(128)NOTNULL,
"MODEL_HTML"CLOB,
CONSTRAINTPK_M_MODELPRIMARYKEY("MODELID")
);
CREATE TABLE "M_MODEL" (
"MODELID" VARCHAR2(128) NOT NULL,
"MODEL_HTML" CLOB,
CONSTRAINT PK_M_MODEL PRIMARY KEY ("MODELID")
);
3、sqlMap
Xml代码
update m_model set model_html=#modelHtml# wheremodelid=#modelId#
SELECT t1.MODELID,t1.model_html
FROM M_MODEL t1
WHERE MODELID=#MODELID#
ORDER BY t1.MODELID
update m_model set model_html=#modelHtml# where modelid=#modelId#
SELECT t1.MODELID,t1.model_html
FROM M_MODEL t1
WHERE MODELID=#MODELID#
ORDER BY t1.MODELID
4、DAO的JAVA代码
Java代码
//更新
publicvoidupdateModelHtml(String modelId, String modelHtml) {
Map map = newHashMap(2);
map.put("modelId", modelId);
map.put("modelHtml", modelHtml);
this.getSqlMapClientTemplate().update("updateModelHtml", map);
}
//查询
publicList getModelById(longmodelId) {
returnthis.getSqlMapClientTemplate().queryForList("getModelById", modelId);
}
//更新
public void updateModelHtml(String modelId, String modelHtml) {
Map map = new HashMap(2);
map.put("modelId", modelId);
map.put("modelHtml", modelHtml);
this.getSqlMapClientTemplate().update("updateModelHtml", map);
}
//查询
public List getModelById(long modelId) {
return this.getSqlMapClientTemplate().queryForList("getModelById", modelId);
}
如此,不需要其他的什么OracleClobTypeHandlerCallback 类,也不需要配置ParameterMap,就能达到读写CLOB字段的方法。我测试的字符数是12000左右