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;
}
}