問題:
在使用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}
