0
点赞
收藏
分享

微信扫一扫

Mybatis中的类型转换器

书呆鱼 2022-04-16 阅读 72
spring

无论是mybati是向数据库中存储数据还是将数据读取出来都需要涉及类型转换器。

Mybatis再带的类型转换器:【部分】

       

自定义类型处理器

你可以重写类型处理器或者是新建类型转换器,处理不支持或非标准的类型,具体的实现方法是:
实现TypeHandler接口,或者是继承BaseTypeHandler,然后我们可以有选择的将它映射到JDBC的类型。

代码:
自定义转换器:
  继承BaseTypeHandler类

public class DateHandler  extends BaseTypeHandler<Date> {
    //将Java类型转成数据库需要的类型
    //PreparedStatement属性是指预编译

    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        //根据Date数据类型的数据转换成时间毫秒值
        long time = date.getTime();

        //i表示  在Java代码中传入sql语句的参数中的第几个  time  表示转换后的类型
        //java.lang.reflect.Field的setLong()方法用于将字段的值设置为指定对象上的long。当您需要设置对象字段的值时,可以使用此方法在对象上设置值。
        preparedStatement.setLong(i,time);
    }
    //将数据中的类型转换成Java类型
    //string  参数 表示数据库中要转换的字段名称
    //ResultSet 参数表示查询出的结果集
    @Override
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        long aLong = resultSet.getLong(s);
        Date date = new Date(aLong);
        return date;
    }
    //将数据中的类型转换成Java类型
    @Override
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        long aLong = resultSet.getLong(i);
        Date date = new Date(aLong);
        return date;
    }
    //将数据中的类型转换成Java类型
    @Override
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        long aLong = callableStatement.getLong(i);
        Date date = new Date(aLong);
        return date;
    }

在主配置文件中进行注册类型处理器:

 <typeHandlers>
        <typeHandler handler="com.itheima.zhujie.handler.DateHandler"></typeHandler>
    </typeHandlers>
举报

相关推荐

0 条评论