平時我們寫程序實體類內或多或少都會有枚舉類型屬性,方便嘛。可是mybatis裏怎麼處理他們的增刪改查呢?html
要求:java
插入的時候,會用枚舉的定義插入數據庫,咱們但願在數據庫中看到的是數字或者其餘東西;sql
查詢的時候,數據庫的值能夠自動轉換爲咱們對應的枚舉值。數據庫
舉例,我有一個這樣的枚舉類型:apache
咱們插入數據庫中,數據庫應該爲咱們保存0或者1mybatis
咱們能夠使用mybatis自帶的枚舉類型EnumOrdinalTypeHandlerapp
舉例以下:dom
咱們的UserStatus插入的時候是UserStatus.AVAILABLEide
執行完畢後,看結果:函數
看,是否是結果是咱們指望的那樣。
可是問題來了?
咱們查詢的時候報錯了:Error querying database. Cause: java.lang.IllegalArgumentException: No enum constant cn.com.shuyangyang.mybatis.UserStatus.1
咱們能夠自定義這樣的一個EnumStatusHandler:
mapper.xml裏這樣配置:
如今來看看結果:
[User [user_id=782cba19-559f-41c3-a1b0-25fcac4cf118, user_name=系統管理員, login_name=admin, login_password=admin,user_status=AVAILABLE, create_time=Mon Jan 26 21:17:09 CST 2015, update_time=Mon Jan 26 21:17:09 CST 2015]]
完美結果。