Mybatis自定义类型转换器

本文转换类型为第三方工具类Hutool,工具类中DateTime,将数据库冲datatime转成成Hutool中的DateTime

目录

实现自定义类型转换器大致需要4个步骤

具体实现


实现自定义类型转换器大致需要4个步骤

1.定义TypleHandler 类,继承BaseTypeHandler

2.实现BaseTypeHandler类的4个方法,第一个方法表示java类型转换成数据库类型,2-4表示数据库类型转换成java类型(ps:从resultSet中获取对应列中的字段,再String类型转换成对应数据类型)

3.指定类型换换气作用类型@MappedType(java中的类) @MapperJdbcTypes(jdbc中的类型)

4.再mybatis配置文件中注册

具体实现

@Data
public class MyData{
    private DateTime dateTime=new DateTime();

    public MyData(String dateTime) {
        this.dateTime = new DateTime(dateTime);
    }

    @Override
    public String toString() {
        String dt = dateTime.toString();
        return dt ;
    }
}

步骤2-3

@MappedTypes({MyData.class}) //指定java中的类型
@MappedJdbcTypes({JdbcType.DATETIMEOFFSET}) //指定数据库中的数据类型
public class MyDateTypeHandler extends BaseTypeHandler {
    /*
    当存储数据得说后转换成数据库数据,进行占位符好设置
    preparedStatement 预编译statement
    i表示占位符
    e表示java数据类型
    jdbcType表示数据库类型
    */
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, MyData myData, JdbcType jdbcType) throws SQLException {
        preparedStatement.setObject(i, myData.toString());
    }

    /*
    读取数据库值的时候,对应数据库的数据转换成java数据
     rs 结果集
     s 列明
 */
    @Override
    public MyData getNullableResult(ResultSet resultSet, String s) throws SQLException {
        String md = resultSet.getString(s);
        return new MyData(md);
    }

    @Override
    public MyData getNullableResult(ResultSet resultSet, int i) throws SQLException {
        return new MyData(resultSet.getString(i));
    }

    @Override
    public MyData getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        return new MyData(callableStatement.getString(i));
    }
}

步骤4

    

        
    

你可能感兴趣的:(mybatis,java,数据库)