精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iBATIS操作CLOB字段實戰淺析

開發 后端
iBATIS操作CLOB字段實戰中是怎么實施的呢?我們將在這篇文章中看到實際的分析,iBATIS操作CLOB字段實戰淺析將給你答案。

iBATIS操作CLOB字段的問題:在網上搜索發現有人遇到了相似的問題,但是情況不盡相同。現在把經驗寫出來,與大家分享。

環境:

JDK/JRE:1.5.0;Spring:1.2.7;iBATIS:2.1.7;Oracle:9.2.0.1;JDBC:OJDBC14_10g.jar

目標:

基于Spring提供的DBCP,使用iBATIS SQL Maps更新數據庫的CLOB字段。

現象:

總是有少部分特定的數據沒有更新,且并不是因為數據過長而失敗,有時很短的數據也會失敗。現象可以重現。原來的SQL的 Maps配置文件如下:

  1. ﹤update id="updateByFoodID" parameterClass="Food"﹥  
  2.   update TB_FOOD  
  3.     ﹤dynamic prepend="set"﹥  
  4.       ﹤isNotNull prepend="," property="foodDesc"﹥  
  5.         FOOD_DESC = #foodDesc#  
  6.       ﹤/isNotNull﹥  
  7.       ﹤isNotNull prepend="," property="foodImage"﹥  
  8.         FOOD_IMAGE = #foodImage#  
  9.       ﹤/isNotNull﹥  
  10.     ﹤/dynamic﹥  
  11.   where FOOD_ID = #foodID#  
  12. ﹤/update﹥ 

查看log4j的DEBUG輸出,只有Preparing Statement、Executing Statement、和Parameters,并沒有異常輸出。

iBATIS操作CLOB字段初步分析原因,有如下6個:

1、首先還是懷疑有地方數據過長;

2、操作的長字符串是JSON格式的,并且數據內容可能包含‘?’、‘/’等特殊字符;

3、由于有多個程序同時使用該表,可能是事務隔離的原因;

4、LOB字段在Dynamic Mapped Statements中運行的問題;

5、這個版本的Spring對iBATIS的支持問題;

6、JDBC的版本問題。

iBATIS操作CLOB字段分別分析:

1、VARCHAR2類型的列最長為4000字節,VARCHAR2類型的PL/SQL變量最長為32767字節,操作的數據確實有可能超過64k,但程序中沒有使用VARCHAR2變量存儲數據,LOB類型的列更是可以存儲4G的數據;

2、走查更新失敗的字符串內容,沒有發現特殊之處;

3、新建一張臨時表,用以進行insert和update操作,發現并沒有解決問題;

4、去掉動態部分,寫最簡單的SQL語句,也沒有解決問題;

5、(暫時略過);

6、這個可能性比較小,一直都在用***版本的JDBC。

網上有人提到3種辦法,其中“第2種”,給SqlMapClientFactoryBean增加lobHandler屬性,據稱是指能工作在native的驅動方式下,經查Spring的API文檔,并不準確,摘錄文檔如下:

While most databases are able to work with DefaultLobHandler, Oracle just accepts Blob/Clob instances created via its own proprietary BLOB/CLOB API, and additionally doesn't accept large streams for PreparedStatement's corresponding setter methods. Therefore, you need to use a strategy like this LobHandler implementation.

Needs to work on a native JDBC Connection, to be able to cast it to oracle.jdbc.OracleConnection. If you pass in Connections from a connection pool (the usual case in a J2EE environment), you need to set an appropriate NativeJdbcExtractor to allow for automatical retrieval of the underlying native JDBC Connection. LobHandler and NativeJdbcExtractor are separate concerns, therefore they are represented by separate strategy interfaces.

Coded via reflection to avoid dependencies on Oracle classes. Even reads in Oracle constants via reflection because of different Oracle drivers (classes12, ojdbc14) having different constant values! As this LobHandler initializes Oracle classes on instantiation, do not define this as eager-initializing singleton if you do not want to depend on the Oracle JAR being in the class path: use "lazy-init=true" to avoid this issue.

因此,修改Spring配置文件:

  1. ﹤bean id="jdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" /﹥  
  2. ﹤bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"﹥  
  3.     ﹤property name="nativeJdbcExtractor"﹥﹤ref local="jdbcExtractor" /﹥﹤/property﹥  
  4. ﹤/bean﹥  
  5. ﹤bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"﹥  
  6.     ﹤property name="configLocation" value="classpath:conf/sqlMapConfig.xml"﹥﹤/property﹥  
  7.     ﹤property name="dataSource"﹥﹤ref local="aeqdsDataSource" /﹥﹤/property﹥  
  8.     ﹤property name="lobHandler"﹥﹤ref local="oracleLobHandler" /﹥﹤/property﹥  
  9. ﹤/bean﹥ 

未果。

使用提到的“第3種”方法,這又有2種方式,第1種是全局性的,在SQL Maps配置文件中加入callback方法:

  1. ﹤typeHandler jdbcType="BLOB" javaType="[B" callback="org.  
  2. ringframework.orm.ibatis.support.BlobByteArrayTypeHandler" /﹥  
  3. ﹤typeHandler jdbcType="CLOB" javaType="java.lang.String"   
  4. llback="org.springframework.orm.ibatis.support.ClobStringTypeHandler" /﹥ 

第2種是在單個的屬性上指定typeHandler,如果是select,就可以用:

  1. ﹤resultMap id="foodResult" class="Food"﹥  
  2.   ﹤result property="foodId" column="FOOD_ID"/﹥  
  3.   ﹤result property="foodDesc" column="FOOD_DESC" typeHandler="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/﹥  
  4.   ﹤result property="foodImage" column="FOOD_IMAGE" typeHandler="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"/﹥  
  5. ﹤/resultMap﹥ 

如果是insert或update,就可以用:

  1. ﹤update id="updateByFoodID" parameterClass="Food"﹥  
  2.   update TB_FOOD  
  3.     set FOOD_DESC = #foodDesc,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,  
  4.         FOOD_IMAGE = #foodImage,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#  
  5.     where FOOD_ID = #foodID#  
  6. ﹤/update﹥ 

加入這個callback或typeHandler方法后,iBATIS抱怨沒見過這個標記,程序不能啟動。把iBATIS升級為2.3.0,順便也把Spring升級為2.0.2,正常啟動。但是效果更差,所有數據均不能更新,且日志顯示只進行了Prepare Statement,卻沒有執行。

死馬當活馬醫:

  1. ﹤parameterMap id="updateByFoodIDPara" class="Food"﹥  
  2.   ﹤parameter property="foodDesc" jdbcType="CLOB" javaType="java.lang.String" /﹥  
  3.   ﹤parameter property="foodImage" jdbcType="BLOB" javaType="[B" /﹥  
  4.   ﹤parameter property="foodID" jdbcType="VARCHAR" javaType="java.lang.String" /﹥  
  5. ﹤/parameterMap﹥  
  6. ﹤update id="updateByFoodID" parameterMap="updateByFoodIDPara"﹥  
  7.   update TB_FOOD  
  8.     set FOOD_DESC = ?, FOOD_IMAGE = ?  
  9.     where FOOD_ID = ?  
  10. ﹤/update﹥ 

依舊未果。

使出殺手锏,把update封裝在一個存儲過程中(其中不需要特別的事務處理),然后將SQL Maps配置文件的對應內容簡簡單單的修改為:

  1. ﹤procedure id="updateByFoodID" parameterClass="Food"﹥  
  2.   {call pkg_xxx.sp_xxx (#foodID#, #foodDesc#, #foodImage#)}  
  3. ﹤/procedure﹥ 

OK!

iBATIS操作CLOB字段的問題還是要在實戰中多多總結,希望這篇文章對你理解iBATIS操作CLOB字段有所幫助。

【編輯推薦】

  1. iBATIS標簽詳解
  2. iBATIS是什么?
  3. iBATIS的優、缺點及注意事項淺談
  4. iBATIS操作Blob與Clob淺析
  5. iBATIS讀寫CLOB數據淺析
責任編輯:仲衡 來源: 百度空間
相關推薦

2009-07-15 16:26:04

iBATIS Clob

2009-07-15 16:42:03

iBATIS讀寫CLO

2011-04-19 09:14:59

Ibatis

2009-07-21 11:12:00

iBATIS配置

2009-07-22 16:27:24

iBATIS配置類iBATIS操作類

2009-07-15 17:19:31

iBATIS Ecli

2009-07-20 18:00:16

iBATIS DAO事

2009-07-22 10:03:11

iBATIS Resu

2009-07-16 09:14:26

iBATIS DAO

2009-07-17 10:32:45

iBATIS MapB

2009-07-22 10:42:59

iBATIS Cach

2009-07-16 10:23:30

iBATIS工作原理

2009-07-15 17:58:07

iBATIS 動態映射

2009-07-20 13:47:08

iBATIS.NET字

2009-07-22 15:21:00

iBATIS SQLM

2009-07-16 13:08:09

iBATIS快速創建應

2009-07-22 09:44:05

iBATIS Para

2009-07-17 17:05:44

iBATIS緩存cacheModel

2009-07-17 10:59:59

iBATIS接口

2009-07-22 15:01:01

iBATIS SQLM
點贊
收藏

51CTO技術棧公眾號

jizzjizz国产精品喷水| 久久精品影视伊人网| 国产真人做爰毛片视频直播| 国产一区二区网站| 亚洲有吗中文字幕| 欧美一级国产精品| 男人的天堂avav| 色一情一乱一乱一区91av| 亚洲麻豆视频| 精品1区2区在线观看| 成人免费在线网| 青青国产在线| 亚洲成人在线| 精品av久久707| 人妻少妇被粗大爽9797pw| 久草在线免费福利资源| 日韩精品成人一区二区三区| 日韩在线视频二区| 制服丝袜av在线| 国内激情视频在线观看| 中文字幕精品一区二区精品绿巨人| 国产精品国模在线| 中文字幕免费在线看线人动作大片| 99热播精品免费| 亚洲二区视频在线| 日韩欧美亚洲日产国产| 性生交大片免费看女人按摩| 亚洲网站啪啪| 日韩在线www| 亚洲调教欧美在线| 国产精品欧美一区二区三区不卡| 午夜精品一区二区三区免费视频 | 激情欧美一区二区三区在线观看| 欧美激情小视频| 成年人视频软件| 国产精品高潮呻吟久久久久| 亚洲人成伊人成综合网小说| 成人在线看片| 99精品国产99久久久久久97| 久久一区二区三区超碰国产精品| 久久久久久97| 亚洲a∨无码无在线观看| 西瓜成人精品人成网站| 日韩av影视综合网| 第四色在线视频| 综合欧美亚洲| 日韩免费高清视频| 国产无遮挡猛进猛出免费软件| 一二三四视频在线中文| 懂色av中文一区二区三区天美| 在线一区日本视频| 欧美性猛交xxx乱大交3蜜桃| 国产精品国产自产拍高清av王其| 亚洲国产精品一区在线观看不卡| 天堂在线观看免费视频| 成人做爰69片免费看网站| 成人在线观看91| 黄色av免费观看| 99久久免费精品| 成人在线免费观看视视频| 亚洲天堂手机版| 日韩电影免费一区| 国产色视频一区| 国产精品亚洲lv粉色| 国产一二精品视频| 亚洲综合在线中文字幕| 亚洲成a人片在线| 不卡一区二区在线| 美女亚洲精品| 在线视频91p| 亚洲视频狠狠干| 最新国产精品久久| 国产乱码在线| 欧美性极品xxxx娇小| 777久久久精品一区二区三区| 91精品久久久久久粉嫩| 亚洲在线中文字幕| 久久国产亚洲精品无码| 99久久久国产精品免费调教网站| 欧美一区二区三区不卡| 波多野结衣网页| 另类春色校园亚洲| 在线看福利67194| 欧美丰满熟妇bbbbbb| 91精品久久久久久久久久不卡| 欧美大胆a视频| 五月婷婷色丁香| 久久精品国产久精国产爱| 国产二区一区| 91在线不卡| 有码一区二区三区| 国产手机免费视频| 欧美7777| 欧美一级片在线| 欧美大片免费播放器| 久久麻豆精品| 久久国产精彩视频| 永久免费看片直接| 日韩午夜一区| 96精品久久久久中文字幕| 天堂中文字幕在线| 中文字幕日本不卡| 国内外成人免费激情视频| 九九九九九九精品任你躁| 亚洲国产精品字幕| 久久爱一区二区| 国产专区一区| 国产美女精品免费电影| 亚洲精品911| 国产精品灌醉下药二区| 黄色动漫网站入口| 日韩精品影院| 91麻豆精品国产自产在线观看一区 | 杨幂一区欧美专区| 日韩av激情| 欧美裸体一区二区三区| 亚洲AV无码片久久精品| 亚洲大胆视频| 国产精品美女久久| 欧美成人免费| 午夜精品视频在线观看| 婷婷激情5月天| 欧美少妇xxxx| 国产91精品青草社区| 亚洲天堂网视频| 欧美激情在线观看视频免费| 一区二区传媒有限公司| 国产精品久久乐| 日韩电影网在线| 国产极品美女高潮无套嗷嗷叫酒店| 麻豆一区二区三| 日本一区二区三区精品视频| 日韩脚交footjobhd| 精品国产不卡一区二区三区| 一区二区国产精品精华液| 免费一级欧美片在线观看| 免费看污久久久| aa级大片免费在线观看| 精品嫩草影院久久| 精品爆乳一区二区三区无码av| 国产在线不卡视频| 最新av在线免费观看| 在线播放成人| 亚洲精品影视在线观看| 免费日韩一级片| 99国产精品视频免费观看| 水蜜桃色314在线观看| 国产欧美一区二区三区米奇| 久久久久久久久久亚洲| 蜜桃视频污在线观看| 亚洲午夜日本在线观看| 91精品又粗又猛又爽| 国自产拍偷拍福利精品免费一| 日韩av片电影专区| 午夜性色福利影院| 日韩欧美在线播放| 精品国产av色一区二区深夜久久| 亚洲精品资源| 欧美日韩另类丝袜其他| 亚洲成人av观看| 亚洲国产精品va在线观看黑人| 日韩成人免费在线观看| 91免费观看在线| 午夜免费一区二区| 久久人体视频| 国产精品网红福利| 91高清在线视频| 亚洲伦理在线精品| 久久久无码人妻精品无码| 国产精品chinese| 高清不卡一区二区三区| 黄色污网站在线观看| 亚洲欧美成人一区二区在线电影| 久久夜色精品亚洲| 久久久久久电影| 97av视频在线观看| 欧美xxxxx视频| 国产在线观看精品一区二区三区| 精品国产白色丝袜高跟鞋| 欧美日本在线播放| 东京热无码av男人的天堂| 奇米色777欧美一区二区| 久久久久久久久网| 婷婷精品在线| 国产欧美日韩视频| www.综合网.com| 精品女同一区二区| 最近日韩免费视频| 亚洲亚洲人成综合网络| 一级片视频免费看| 国产综合色视频| 青青草原成人网| 欧美国产先锋| 日本一区免费看| 亚洲精品66| 5566成人精品视频免费| 岛国在线视频| 精品av久久707| 中文字幕av网站| 亚洲综合一区二区| gv天堂gv无码男同在线观看| 成人综合婷婷国产精品久久免费| 五月天激情视频在线观看| 亚洲激情中文在线| 欧美日韩在线不卡一区| av亚洲一区| 久久的精品视频| 国产精品秘入口| 亚洲国产成人av在线| 超碰在线97观看| 精品久久久久久久久久国产| 国产高潮流白浆| 中文字幕国产一区| 日韩精品视频一区二区| 久久国产乱子精品免费女| 一本一道久久a久久精品综合| 日韩电影在线观看完整免费观看| 亚洲在线观看视频| 四虎地址8848精品| 国产精品日韩一区| 成人性生交大片免费网站| 久久久亚洲福利精品午夜| 97超碰资源站在线观看| 精品网站999www| 欧美特黄一级视频| 精品日韩99亚洲| 国产草草影院ccyycom| 欧美日韩中文一区| 国产精品传媒在线观看| 亚洲香蕉伊在人在线观| 亚洲天堂一级片| 国产精品福利影院| av在线播放中文字幕| 国产日韩欧美精品在线| 91人人澡人人爽| 老汉av免费一区二区三区| av免费网站观看| 黄色欧美成人| 在线观看18视频网站| 欧美激情电影| 一区二区三区偷拍| 国产精品久久久久无码av| 一区二区国产日产| 欧美国产偷国产精品三区| 艳色歌舞团一区二区三区| 欧美国产一级| 青青视频免费在线| 欧美日韩一区二区高清| 男人添女人下部视频免费| 欧美日韩免费| 人妻久久久一区二区三区| 一级欧洲+日本+国产| 欧美做暖暖视频| 国产精品激情| 日韩欧美猛交xxxxx无码| 激情久久久久久| 毛片在线视频播放| 久久高清国产| 国产小视频精品| 国产一区二区三区黄视频| 粗大的内捧猛烈进出视频| 成人免费电影视频| 手机av免费看| 中文字幕在线免费不卡| 中文字幕av免费在线观看| 亚洲18色成人| 亚洲av无码不卡| 7777精品伊人久久久大香线蕉的| 国产成人麻豆精品午夜在线| 欧美精品一区二区三区很污很色的| 日本久久一级片| 亚洲香蕉成人av网站在线观看| 在线免费黄色| 欧美日韩xxx| 欧产日产国产精品视频| 国产精品91一区| 四虎永久精品在线| 国产欧美中文字幕| 成人av影音| 国产尤物91| 久久日文中文字幕乱码| 日韩欧美不卡在线| 日韩高清不卡一区二区三区| 国产精品嫩草影视| 91美女片黄在线观看91美女| 日本视频在线免费| 亚洲mv大片欧洲mv大片精品| 中文在线a天堂| 亚洲精品在线电影| 色网站免费在线观看| 久久人人爽人人爽人人片av高请| 456成人影院在线观看| 超碰97在线资源| 精品国产一区一区二区三亚瑟 | 国产欧美日韩免费观看| 婷婷久久伊人| 99精品国产福利在线观看免费 | 成人精品免费看| 成都免费高清电影| 亚洲国产精品一区二区久久 | 亚洲妇女成熟| 青青久久av北条麻妃黑人| 91精品亚洲一区在线观看| 久久综合入口| 中文字幕日韩一区二区不卡| 熟妇人妻va精品中文字幕| 国产成人av影院| 极品尤物一区二区| 日韩欧美在线视频| 午夜精品久久久久久久99热黄桃 | 国产aⅴ综合色| 妺妺窝人体色WWW精品| 午夜电影网亚洲视频| 国产毛片毛片毛片毛片毛片| 日韩电影第一页| 国产一线二线在线观看| 成人福利网站在线观看11| 国产一区二区电影在线观看| 青娱乐自拍偷拍| 精品午夜久久福利影院| 中文字幕在线观看免费高清| 欧美视频在线观看 亚洲欧| 黑人精品一区二区| 大胆欧美人体视频| 日本午夜免费一区二区| 精品国产乱码久久久久久蜜柚| 韩日视频一区| 国产大学生av| 亚洲综合一区二区精品导航| 精品人妻av一区二区三区| 国产一区二区三区网站| 欧美一卡二卡| av一区和二区| 欧美三级特黄| 黄页网站在线看| 中文字幕综合网| 国产毛片在线视频| 免费97视频在线精品国自产拍| 91精品福利观看| 中文字幕中文字幕99| 亚洲福利电影| 精品国产人妻一区二区三区| 天天色综合天天| 欧美日韩伦理片| 欧美一级淫片videoshd| 亚洲高清极品| 日韩免费高清在线| 国产精品女上位| 国产探花精品一区二区| 久久夜色精品亚洲噜噜国产mv| 91亚洲精品在看在线观看高清| 精品久久免费观看| 极品少妇xxxx精品少妇偷拍| 91香蕉一区二区三区在线观看| 欧美狂野另类xxxxoooo| a篇片在线观看网站| 91精品国产高清久久久久久91裸体 | 自拍偷拍欧美视频| 日本精品一区二区三区不卡无字幕| 日韩国产在线观看一区| 国产熟女一区二区| 欧美一a一片一级一片| 免费av网站在线看| 91免费看片在线| 精品96久久久久久中文字幕无| 免费黄色三级网站| 色综合av在线| 黄色成人在线观看| 国产一区二区免费在线观看| 亚洲激情亚洲| x88av在线| 69p69国产精品| sis001亚洲原创区| 日韩资源av在线| 久久超碰97人人做人人爱| 久久亚洲AV无码| 亚洲人成网在线播放| 中文字幕日韩亚洲| 毛片在线播放视频| 国产精品免费视频网站| 亚洲国产精品一| 国产精品27p| 婷婷激情综合| 成年人的黄色片| 欧美精品粉嫩高潮一区二区| 9999在线视频| 中文字幕av日韩精品| 丁香五精品蜜臀久久久久99网站| 日日夜夜狠狠操| 欧美大肥婆大肥bbbbb| 亚洲成a人片77777在线播放| 伊人免费视频二| 日韩欧美国产骚| av中文字幕在线播放| 久精品国产欧美| 国产曰批免费观看久久久| 精品少妇久久久| 在线看国产精品| 久久久久观看| 在线观看日本一区二区|