生活随笔
收集整理的這篇文章主要介紹了
详解Ibatis写CLOB数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Ibatis是一個高效,方便,易于學習的數據訪問組件,在性能上比hibernate高,學習難度也比hibernate和jdo要低,而且它比 直接使用jdbc方便和易于維護。所以Ibatis深入大家的喜愛,一些對性能有更高的要求的系統(如保險,金融行業系統),或改造遺留系統 時,Ibatis是數據訪問組件的首選。
在使用Oracle數據庫時,讀取CLOB和BLOB等大類型的數據一直是個比較犯難的事,一般都是通過JDBC代碼來實現對CLOB和BLOB數據的讀寫,效果和性能都是最好的,但是代碼也相當復雜,且代碼難以重用。
公司的項目正好有這方面的需要,要求我給予解決。在網上找了一些方法,好多不能滿足需求,而且都是轉載,于是看了下ibatis包,發現ibatis里面已經封裝了類,只要直接使用即可。
有兩種方式實現:
1.通過配置ParameterMap和ResultMap來實現對LOB類型的讀寫
1.1 java代碼
假設java類中有個字符串屬性
private?String??detail;?? 1.2 sqlmap配置
<parameterMap?class="Description"?id="DescriptionParam">????????<parameter?property="detail"?javaType="java.lang.String"?jdbcType="NCLOB"??????typeHandler="com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback"/>?????<parameter?property="id"?javaType="java.lang.Long"/>????parameterMap>? 注意:因為使用了ParameterMap作為輸入參數,在插入語句中用?號來代替屬性值(如:#detail#)
新增數據時配置
<insert?id="addDescription"?parameterClass="Description"?>????????????insert?into?description ?????(id,? ??????detail) ???values(#?#,#?#) ?????]]>?????<selectKey?resultClass="java.lang.Long"?keyProperty="id"?type="pre">??????????select?SEQ_description_ID.NEXTVAL?from?DUAL ?????selectKey>???insert>? 更新數據時配置
<update?id="updateDescription"?parameterClass="Description"?>??????update?description?set?tab_detail?????=?#?#??where?id=#?#?? ???update>?? 2. 通過parameterClass傳入參數(推薦)
2.1 java代碼
假設java類中有個字符串屬性
private?String??detail;?? 2.2 sqlmap配置
新增數據時配置
<insert?id="addDescription"?parameterClass="Description"?>?????????????insert?into?description?(id,?detail) ???????values?(#id#,?#tabDetail,handler=com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback#) ?????]]>?????<selectKey?resultClass="java.lang.Long"?keyProperty="id"?type="pre">??????????select?SEQ_description_ID.NEXTVAL?from?DUAL ?????selectKey>???insert>? 更新數據時配置
<update?id="updateDescription"?parameterClass="Description"?>?????update?description ?????<dynamic?prepend="set"?>???????<isNotNull?prepend=","?property="detail"?>????????tab_detail?????=?#detail,handler=com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback# ???????isNotNull>????dynamic>???where?id=#id#?? ??update>? ibatis還存在很多的typeHandler,大家自己可以看看
轉載于:https://blog.51cto.com/jawsy/550295
總結
以上是生活随笔為你收集整理的详解Ibatis写CLOB数据的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。