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配置文件中注册<typeHandler>

具体实现

@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<MyData> {
    /*
    当存储数据得说后转换成数据库数据,进行占位符好设置
    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

    <typeHandlers>
<!--        <typeHandler handler="com.llkj.TypeHandler.MyDateTypeHandler"/>-->
        <package name="com.llkj.TypeHandler"/>
    </typeHandlers>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值