精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美精品尤物在线观看| 成人在线观看亚洲| 蜜桃一区二区三区在线观看| 另类视频在线观看| v天堂中文在线| 成人免费黄色av| 女教师淫辱の教室蜜臀av软件| 婷婷成人av| 亚洲国产三级在线| 亚洲v日韩v欧美v综合| 国产国语亲子伦亲子| 亚洲一区二区三区免费在线观看| 自拍偷拍免费精品| 在线精品一区二区三区| 成人豆花视频| 色综合天天综合在线视频| avove在线观看| 激情福利在线| av在线不卡免费看| 91在线免费视频| 激情网站在线观看| 亚洲精品九九| 久久手机免费视频| 久操视频在线观看免费| 成人午夜网址| 欧美一级免费大片| 成人免费在线观看视频网站| 国产精品论坛| 亚洲综合区在线| 在线播放豆国产99亚洲| 黄网站在线观看| 91影院在线免费观看| 成人18视频| 国产精品怡红院| 免费观看30秒视频久久| 青青草原一区二区| 日韩高清免费av| 亚洲天天影视网| 中文字幕日韩欧美| 国产aⅴ激情无码久久久无码| 大伊香蕉精品在线品播放| 欧美一级午夜免费电影| 中文字幕线观看| 黄色成人在线观看网站| 欧美中文一区二区三区| 九色porny91| gogo高清在线播放免费| 亚洲在线观看免费| 国产成人永久免费视频| 免费污视频在线| 一区二区激情小说| 欧美性潮喷xxxxx免费视频看| h片在线播放| 亚洲精品写真福利| 300部国产真实乱| 91在线中字| 亚洲精品水蜜桃| 成人一级生活片| 男女在线观看视频| 午夜精品aaa| 国产精品秘入口18禁麻豆免会员| 乱馆动漫1~6集在线观看| 亚洲妇熟xx妇色黄| av免费观看网| 日本韩国欧美| 欧美日韩中文字幕一区二区| 最新国产黄色网址| 韩国三级大全久久网站| 欧美成人国产一区二区| 国产黑丝在线观看| 亚洲欧洲av| 在线观看日韩欧美| 国产67194| 在线精品一区二区| 91a在线视频| jizz国产在线| 国产最新精品免费| 成人免费视频观看视频| 亚洲 欧美 自拍偷拍| 国产午夜精品美女毛片视频| 一区二区三区av在线| 怡红院红怡院欧美aⅴ怡春院| 亚洲午夜在线视频| 久久精品视频91| 99久久99九九99九九九| 欧美精品一区二区三区久久久| 男生裸体视频网站| 成人综合久久| 欧美精品九九久久| 亚洲精品久久久久久久蜜桃| 国产一区在线精品| 精品日韩电影| 欧美日韩xx| 激情成人中文字幕| 奇米影视四色在线| 久久99国产精品久久99大师| 亚洲性av网站| 国产中文字字幕乱码无限| 久久精品观看| 成人av网站观看| 国产精品久久久久一区二区国产 | 69av.com| 久久美女性网| 鬼打鬼之黄金道士1992林正英| 狠狠狠综合7777久夜色撩人| 一区二区三区四区不卡在线| 国产免费人做人爱午夜视频| 人人九九精品视频| 一本色道久久88综合日韩精品| 久久国产精品波多野结衣| 日韩影院在线观看| 国产精品免费一区二区三区| 午夜激情视频在线观看| 黑人精品xxx一区一二区| 91欧美一区二区三区| 在线看成人短视频| 欧美日韩高清区| 亚洲一卡二卡在线| 久久网站最新地址| 国产妇女馒头高清泬20p多| 亚洲成a人片777777久久| 亚洲女人天堂网| 国产无码精品在线观看| 国产一二三精品| 亚洲欧美日韩精品在线| av高清不卡| 亚洲护士老师的毛茸茸最新章节 | www.91在线| 懂色av影视一区二区三区| 又黄又爽又色的视频| 四虎8848精品成人免费网站| 国产黑人绿帽在线第一区| 天天干在线观看| 午夜精品久久久久久久99樱桃| 亚洲黄色片免费| 成人影视亚洲图片在线| 国产成人在线视频| 欧美xxx.com| 欧美午夜影院在线视频| 999精品免费视频| 日韩免费在线| 欧美老女人在线视频| 国产欧美久久久| 亚洲色图清纯唯美| 一级黄色大片儿| 91精品亚洲| 91久久久久久久久久久久久| 国产在线观看a视频| 欧美久久久久久蜜桃| 国产福利在线导航| 激情综合色综合久久| 蜜臀av性久久久久蜜臀av麻豆| 热re99久久精品国产66热| 天堂在线视频免费观看| 亚洲二区在线观看| 欲求不满的岳中文字幕| 午夜剧场在线免费观看| 天天射天天操天天干| 亚洲精品videosex极品| 青娱乐国产精品视频| 中文字幕日韩欧美精品高清在线| 91啪国产在线| 在线免费av导航| 欧美大片一区二区| 成人深夜直播免费观看| 国产黄色片在线观看| 欧美在线视频全部完| 午夜激情视频在线播放| 国产专区欧美精品| 999久久欧美人妻一区二区| 精品人妻一区二区三区日产乱码卜| 成入视频在线观看| 亚洲精品色婷婷福利天堂| 潘金莲一级淫片aaaaaa播放| 欧美激情在线观看视频免费| av亚洲天堂网| 影音先锋久久精品| 欧美高清性xxxxhd| 999精品视频在线观看| 欧美精品www| 男女视频在线观看免费| 欧美绝品在线观看成人午夜影视| 色在线观看视频| 91蜜桃免费观看视频| 另类小说色综合| 欧美体内she精视频在线观看| 久久国产精品久久| 成人亚洲视频| 欧美激情欧美激情在线五月| 奇米影视888狠狠狠777不卡| 欧美军同video69gay| 日产欧产va高清| 国产精品久久久久久久久免费桃花| 中文字幕一区二区三区四| 免费国产自线拍一欧美视频| 中文字幕剧情在线观看一区| 美女一区二区在线观看| 国产日本欧美视频| 精品三级久久| 久久综合久久八八| 九色在线观看| 亚洲精品在线免费观看视频| 中国a一片一级一片| 亚洲丶国产丶欧美一区二区三区| 99re6热在线精品视频| 国产91精品精华液一区二区三区 | 日本精品一区| 一区二区三区四区高清视频| 国产精品美女久久久免费| 91白丝在线| 久久亚洲精品成人| 美女欧美视频在线观看免费| 精品剧情在线观看| 91免费视频播放| 色屁屁一区二区| 国产无码精品一区二区| 亚洲精品视频观看| 四虎影视1304t| 国产日产欧美精品一区二区三区| 中文字幕第3页| 国产精品综合二区| 老司机午夜性大片| 日韩中文字幕91| 欧美日本视频在线观看| 欧美日一区二区在线观看 | 自拍偷拍视频亚洲| 成人黄色在线看| 国产又粗又猛又爽又黄| 久久99精品网久久| 超碰在线播放91| 丝瓜av网站精品一区二区| 大陆极品少妇内射aaaaa| 国内自拍一区| 国产传媒久久久| 成人影视亚洲图片在线| 日本一区二区不卡高清更新| 小嫩嫩12欧美| 久久精品五月婷婷| 日韩欧美黄色| 免费成人av网站| 一区三区在线欧| 欧美精品中文字幕一区二区| 台湾佬综合网| 久久综合狠狠综合久久综青草| 美女呻吟一区| 欧美精品亚洲| 国产一区二区三区网| 日本欧洲国产一区二区| 亚洲婷婷伊人| 色一情一乱一伦一区二区三欧美 | 一本色道久久88亚洲精品综合| 亚洲v在线看| 亚洲天堂第一区| 欧美亚洲不卡| 久久久亚洲国产精品| 99国产一区| 日韩精品一区二区三区不卡| 久久先锋影音| 日本肉体xxxx裸体xxx免费| 久久精品国产一区二区三| а 天堂 在线| 成人综合在线观看| 一本色道综合久久欧美日韩精品| 久久综合九色综合欧美98| 欧美 日韩 国产 成人 在线观看| 国产欧美一区二区精品久导航| 黄色国产在线播放| 亚洲男女毛片无遮挡| 久久香蕉精品视频| 欧美日韩免费一区| 中文字幕第三页| 日韩一区二区不卡| 午夜成人鲁丝片午夜精品| 亚洲欧美国产一本综合首页| 自拍视频在线网| 欧美国产亚洲精品久久久8v| 最新欧美色图| 国产日韩精品入口| 高清欧美性猛交xxxx黑人猛| 人禽交欧美网站免费| 亚洲精品中文字幕乱码| 国产3p露脸普通话对白| 日本美女一区二区三区视频| 国产又黄又嫩又滑又白| 久久无码av三级| 欧美黄色一区二区三区| 欧美性猛交视频| 国产精品久久久久久免费免熟| 亚洲国产精品va| 日本中文字幕在线视频| 午夜精品久久久久久久久久久久久| 精品裸体bbb| 国产一区二区高清不卡| 日韩免费久久| 无码aⅴ精品一区二区三区浪潮 | www.88av| 亚洲欧美日韩在线不卡| 国产又大又黄又粗| 欧美xingq一区二区| 超碰免费在线观看| 6080yy精品一区二区三区| 国产精选久久| 亚洲国产高清国产精品| 亚洲视频1区| 人妻精品久久久久中文字幕69| 国产欧美日韩综合| 日韩精品无码一区二区| 欧美一区二区三区视频免费播放| 男人天堂亚洲二区| 97免费视频在线| 麻豆国产一区二区三区四区| 色综合久久久久久久久五月| 亚洲国产片色| 2025中文字幕| 亚洲色图清纯唯美| 一级久久久久久久| 一本色道久久综合狠狠躁篇怎么玩| 男人久久天堂| 国产综合色一区二区三区| 欧美一区激情| av在线免费看片| 国产精品色哟哟| 色老头一区二区| 国产视频精品自拍| 麻豆网站免费在线观看| 国产高清精品一区| 一区二区三区午夜视频| 中文av一区二区三区| 久久久一区二区| 亚洲国产综合久久| 精品国精品自拍自在线| 精品av中文字幕在线毛片| 26uuu亚洲伊人春色| 视频精品二区| 97碰在线视频| 国产精品2024| 欧美成人国产精品高潮| 欧美精选午夜久久久乱码6080| 免费观看a视频| 久久久久久中文字幕| 日韩精品久久久久久久软件91| 先锋影音男人资源| 狠狠色丁香婷婷综合| 神马午夜精品91| 欧美精品久久99久久在免费线| 成人网视频在线观看| 国产精品久久久久国产a级| 久久av综合| 手机在线成人免费视频| 亚洲国产高清不卡| 一级片视频网站| 日韩在线视频免费观看| 国内自拍亚洲| 黄瓜视频免费观看在线观看www| 久久福利视频一区二区| 国产精品三区在线观看| 欧美久久久一区| 超免费在线视频| 极品校花啪啪激情久久| 亚洲区欧美区| 亚洲av综合一区二区| 91激情五月电影| 北条麻妃在线| 国产成人精品视频在线| 第一会所sis001亚洲| 成年人在线观看视频免费| 日韩毛片高清在线播放| 国产女人爽到高潮a毛片| 97在线视频精品| 一区二区美女| 久国产精品视频| 亚洲精品视频一区| 日本福利在线观看| 国产精品v日韩精品| 国产一区二区三区四区五区传媒| 天堂av2020| 亚洲国产精品久久不卡毛片 | 国产午夜精品一区理论片飘花| 日韩三级一区| 国产精品视频一二三四区| 成人一区二区三区视频在线观看| 青青青国产在线 | 国产91视觉| 另类国产ts人妖高潮视频| 欧美老女人性生活视频| 91精品国产一区二区三区蜜臀| 久草在线资源福利站| 日韩亚洲视频在线| 成人免费视频网站在线观看| 国产精品久免费的黄网站| 久久av资源网站| 欧美aaaaaaaa牛牛影院| 看看黄色一级片| 亚洲国产精品精华液网站| wwwxxx在线观看| 国产精品久久一区二区三区| 国产亚洲精品自拍| 欧美日韩激情在线观看| 亚洲美女中文字幕| 成人av综合网|