Oracle存储的字段长度是有限制的,常见的varchar2的保存长度最大为4000,对一些业务字段值可能超过4000的情况,可以使用clob类型进行存储,但是如果直接将大字符串保存到clob的列中,会提示错误:“ORA-01461: 只有在将值插入数据类型为 LONG 的列时,才可以绑定一个 LONG 值”。
1.Java下插入:变量参数必须用#,使用javaType=java.lang.String,jdbcType=CLOB
<!-- 插入详情信息 -->
<insert id="saveInvoicInfoData" parameterClass="InvoicInfoEntity">
insert into dm_invoice_info(typeid,time,textstr,name,userid)
values(#typeId#,sysdate,#textStr,javaType=java.lang.String,jdbcType=CLOB#,#name#,#userId#)
</insert>
2.C#下插入:变量参数必须用#,使用dbType=clob
<!-- 插入详情信息 -->
<insert id="saveInvoicInfoData" parameterClass="InvoicInfoEntity">
insert into dm_invoice_info(typeid,time,textstr,name,userid)
values(#typeId#,sysdate,#textStr,dbType=CLOB#,#name#,#userId#)
</insert>
通过在ibatis里这样的配置,数据库插入时会自动转成clob