平时我们写程序实体类内或多或少都会有枚举类型属性,方便嘛。可是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]]
完美结果。