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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值