mybatis 遇到枚舉類無法獲得有效值

今天在使用mybatis從數據庫中拿數據的時候發現數據的枚舉字段無法取出枚舉類,其他的量都能夠取到有效值。

在同樣的環境下,另一個服務中的類似代碼卻能夠正常取出枚舉類,這就讓事情顯得離奇了起來,把兩對代碼進行了詳細的比較,但是我和前輩都沒有發現代碼的問題,因爲兩段代碼從枚舉類到mybatis的使用方法都是一樣的。

一直到我們突發奇想可能不是數據庫的問題,終於觸及了這次問題的真正成因,在數據庫中枚舉類所對應的字段因爲想要節省空間被設成了tinyint(1),因爲布爾型和枚舉類基本都只需要一位整數就能儲存了,但是我們沒有考慮到mysql中tinyint(1)和布爾類型之間的對應聯繫是特有的,於是在使用mybatis取對象的時候,本應是枚舉類的變量其值其實是布爾類型,由於無法放入枚舉類變量中,所以表現出來就是該枚舉變量值爲空,就好像沒有取出來一樣。

 

總結一下:tinyint(1)在mysql數據庫中與java的布爾類型有特殊的對應關係,就算是使用tinyint(2)也不會造成上述的問題。

 

P.S.:後來我們還是沿用了以前的設置習慣把枚舉類設成了int(11)類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章