Mybatis简单使用——枚举类型(7)

    xiaoxiao2022-07-05  152

    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; } }
    最新回复(0)