mybatis傳參正常且直接運行sql能獲得正確結果但通過mybatis卻查詢不到結果的原因:oracle數據庫中使用了char類型的字段


問題:

在使用mybatis的過程中,多次檢驗傳參、sql語句等查詢條件,並未發現存在錯誤,直接執行后台日志中的sql也能夠查到正確結果,但是后台mybatis返回的值一直是空。

原因:

經過測試發現是數據庫表結構中使用了char作為字段類型,而參數的長度和char的長度不符。在oracle中如果char內容長度不夠,那么會自動用空格補滿。比如我們在char2中插入‘0’,那么數據庫會自動補齊為‘0 ’,當我們從mybatis傳參‘0’進行比較時,‘0’和‘0 ’不相同,返回值就會是空。

解決方法:

1.修改表結構或者傳參的值,使兩者長度適配

2.修改dao層的xml語句,去除多余的空格,例如:select * from tb2 where trim(tb2.id)=#{id}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM