mybatis sql String>Double, 型別引數被強轉為數值型別

davidhhs發表於2015-09-12

 

最近專案中使用 mybatis 做為持久化層框架, 本來覺得還挺簡單的, 這個框架的整體感覺是簡單、直觀明瞭,比較容易上手, 可是剛開始就遇到個棘手的問題,以為是配置哪裡不對, 後來找了好久都沒查出問題。 最後請教高手,幫忙解決了難題。

 

問題簡要:

傳入引數為String型別,xml配置檔案也是VARCHAR型別,可以一旦傳入字元型別的資料,就會丟擲異常, Error querying database.  Cause: java.lang.NumberFormatException: For input string: "XXX", 程式碼如下:


 經過高手多方查詢, 解決方案如下:


 這樣一來問題就解決了

 

 

參考資源 here

參考資源核心描述:

根據提示的資訊,我們很容易知道是資料格式化的時候出了問題,不過為什麼哪?我們定義的沒有錯呀!傳遞的也沒有錯呀!想不通,百度一下吧!下面是百度的一個結果,指明瞭引起錯誤原因的所在!是OGNL的語法問題,這裡'Y'將被認為是char型別的資料,但是'YY'或者“Y”將被認為是String型別的資料,解決方案如下所示:

1:將程式碼改為test="param eq 'Y'.toString()"

2:將程式碼改為test="name == "Y""

3:將程式碼改為test='index == "Y"'

當物件的對映檔案及對應的屬性如下編寫時,<result column="IF_SHIELD" property="ifShield" jdbcType="VARCHAR" /> private String ifShield;

<if test="ifShield==1">是沒問題的(並且數字是全部沒問題的,無論是小數還是整數是正數還是負數),不過這樣編寫<result column="IF_SHIELD" property="ifShield" jdbcType="CHAR" /> private String ifShield;

<if test="ifShield==1">就是有問題的。

 參考如下:

http://www.cnblogs.com/tv151579/p/3297691.html

https://code.google.com/p/mybatis/issues/detail?id=262

相關文章