1、枚举类型处理器:
(1)枚举的字面值
org.apache.ibatis . type.EnumTypeHandler(默认)
(2)枚举的索引值
org . apache .i batis . type .E numOrdinalTypeHandler
2、配置:(1)全局配置
<typeHandlers> <typeHandler javaType=” tk.mybatis.simple.type.Enabled" handler= ” org . apache.ibatis.type.EnumOrdinalTypeHandler ”/> </typeHandlers> 或者
(2)也可以在处理某个字段的时候告诉MyBatis用什么类型处理器
保存:#{empStatus,typeHandler=xxxx}
查询:
<result column="empStatus" property="empStatus" typeHandler=""/>
注意:如果在参数位置修改TypeHandler,应该保证保存数据和查询数据用的TypeHandler是一样的。 -->
3、自定义枚举类型处理器:
//枚举类 public enum StatusEm { LOGIN(100, "用户登录"), LOGOUT(200, "用户登出"), REMOVE(300, "用户不存在"); private Integer code; private String msg; } //自定义处理器 public class MyEnumEmpStatusTypeHandler implements TypeHandler<StatusEm> { public MyEnumEmpStatusTypeHandler() { } @Override public void setParameter(PreparedStatement preparedStatement, int i, StatusEm statusEm, JdbcType jdbcType) throws SQLException { System.out.println("要保存的状态码:" + statusEm.getCode()); preparedStatement.setString(i,statusEm.getCode().toString()); } //根据列名获取值 @Override public StatusEm getResult(ResultSet resultSet, String columnName) throws SQLException { int code = resultSet.getInt(columnName); System.out.println("columnName从数据库中获取的状态码:" + code); StatusEm statusEm=StatusEm.getEmpStatusByCode(code); return statusEm; } //根据索引获取值 @Override public StatusEm getResult(ResultSet resultSet, int columnIndex) throws SQLException { int code = resultSet.getInt(columnIndex); System.out.println("columnIndex从数据库中获取的状态码:" + code); StatusEm statusEm=StatusEm.getEmpStatusByCode(code); return statusEm; } //从存储过程中获取 @Override public StatusEm getResult(CallableStatement callableStatement, int columnIndex) throws SQLException { int code = callableStatement.getInt(columnIndex); System.out.println("callableStatement从数据库中获取的状态码:" + code); StatusEm statusEm=StatusEm.getEmpStatusByCode(code); return statusEm; } }