mybatis查詢oracle long類型的踩坑記錄
mybatis查詢oracle long類型的坑
問題描述
最近在開發(fā)中,遇到查詢oracle long類型異常的問題,需求是查詢一個字段中含有函數(shù)的索引的內(nèi)容,然后通過mybatis獲取返回的內(nèi)容封裝成對象,其中l(wèi)ong類型在對象中用String接收,COLUMN_EXPRESSION字段為long類型,供后續(xù)業(yè)務使用,自定義查詢語句如下
select a.COLUMN_EXPRESSION, a.COLUMN_POSITION from USER_IND_EXPRESSIONS a inner join USER_IND_COLUMNS b on b.INDEX_NAME = a.INDEX_NAME and b.TABLE_NAME = a.TABLE_NAME and b.COLUMN_POSITION = a.COLUMN_POSITION where b.COLUMN_NAME like 'SYS_NC%$'
報錯:Cause: java.sql.SQLException: 流已被關閉 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17027]; 流已被關閉
解決辦法
如果可以修改字段類型情況下,建議改成BLOB,CLOB,NLOB,非常不建議使用LONG;
在無法修改字段類型情況下,一定要將LONG類型字段放在查詢字段的最后(COLUMN_EXPRESSION放在最后),例如
select a.COLUMN_POSITION, a.COLUMN_EXPRESSION from USER_IND_EXPRESSIONS a inner join USER_IND_COLUMNS b on b.INDEX_NAME = a.INDEX_NAME and b.TABLE_NAME = a.TABLE_NAME and b.COLUMN_POSITION = a.COLUMN_POSITION where b.COLUMN_NAME like 'SYS_NC%$'
收獲:
Oracle中如果是數(shù)值,用NUMBER替換LONG,如果是大對象可以用BLOB,CLOB,NLOB替換LONG;其實查詢時還可以通過存儲過程將LONG轉(zhuǎn)成VARCHAR2返回,個人不建議使用存儲過程。
mybatis處理Oracle中的LONG字段
當使用mybatis查詢oracle中帶有LONG數(shù)據(jù)類型的時候,實體類使用的是String類型來接收.
一般會報兩種錯誤:
- 1.無效字段類型
- 2.流已被關閉
處理方法
第一種方式:不使用LONG類型(廢話)
第二種方式:自定義函數(shù)將LONG類型轉(zhuǎn)換為VARCHAR類型(百度,方法一大堆,都是)
第三種方式:首先在Mapper.xml文件中自定義resultMap映射關系,將LONG類型字段的jdbcType設置為LONGVARBINARY
<resultMap id="BaseResultMap" type="com.libstar.tc.dto.Biblios" > ? ? <result column="name" property="bookrecno" jdbcType="VARCHAR" /> ? ? <result column="content" property="content" jdbcType="LONGVARBINARY" /> </resultMap>
然后自定義SQL查詢數(shù)據(jù),在寫SQL的時候要注意了,將LONG類型的那個字段寫在最后,像這樣
SELECT ID,NAME,CONTENT FROM XXX;其中CONTENT字段為LONG類型字段.
即可成功~
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
深入理解Java class文件格式_動力節(jié)點Java學院整理
對于理解JVM和深入理解Java語言, 學習并了解class文件的格式都是必須要掌握的功課2017-06-06Java實現(xiàn)深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)算法
深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)是兩種基本的圖搜索算法,可用于圖的遍歷、路徑搜索等問題。DFS采用棧結(jié)構(gòu)實現(xiàn),從起點開始往深處遍歷,直到找到目標節(jié)點或遍歷完整個圖;BFS采用隊列結(jié)構(gòu)實現(xiàn),從起點開始往廣處遍歷,直到找到目標節(jié)點或遍歷完整個圖2023-04-04Springboot項目對數(shù)據(jù)庫用戶名密碼實現(xiàn)加密過程解析
這篇文章主要介紹了Springboot項目對數(shù)據(jù)庫用戶名密碼實現(xiàn)加密過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06springboot+jwt+微信小程序授權(quán)登錄獲取token的方法實例
本文主要介紹了springboot+jwt+微信小程序授權(quán)登錄獲取token的方法實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03淺談web服務器項目中request請求和response的相關響應處理
這篇文章主要介紹了淺談web服務器項目中request請求和response的相關響應處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07