【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;
生活随笔
收集整理的這篇文章主要介紹了
【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、問題
Mybatis將String類型的0存到數據庫中的number類型字段中,變成了空;
二、分析
自己寫了一個自動寫代碼的腳本,帶入springBatch后,讀取文件時,少了序列號0-9的記錄(10筆一提交),其他遇到包含序列號為0的也都出現一樣的問題,慢慢縮小問題源,發現是這個String類型的0存入number類型的數據庫導致;報錯報的也是無法將null插入數據庫;通過debug發現,讀取完記錄,映射成實體類后,實體類中的序列號是有值的(字符串0);后來發現,最大可能就是在Mybatis中,懷疑是插入SQL的字段條件判斷;
<if test="id != null and id != '' "></if>三、解決
將如下判斷條件:
<if test="id != null and id != '' "></if>改為:
<if test="id != null "></if>即可;因為實體類中是文件里是String類型,映射到實體類中的屬性是BigDecimal類型,數據庫中是number類型,因為BigDecimal是不可能為【空字符串】的,所以,這里應該是Mybatis幫我們把這里的字符串非空,轉換成BigDecimal的非BigDecimal.Zero,即BigDecimal類型的0了;
歡迎關注我的微信公眾號:【幕橋社區】
總結
以上是生活随笔為你收集整理的【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库有string_mysq
- 下一篇: linux cmake编译源码,linu