暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MyBatis框架高级篇(一) 自定义类型转换器

码农的修炼之道 2019-06-21
826

 在MyBatis中,提供了一系列的类型转换器(TypeHandler),MyBatis设置参数到PreparedStatement 或者从ResultSet 结果集中取得值时,就会使用TypeHandler 来处理数据库类型与java 类型之间转换。


      在MyBatis中的org.apache.ibatis.type.TypeHandlerRegistry中定义了一些列Java类型和数据库类型的转换器,如下图所示。

      在实际场景下,比如我们POJO对象中属性为Boolean类型,数据库只能存储数值类型 ,此时需要我们自定义一个类型转换器。


01

自定义转换器

     我们以POJO对象中的某属性为Boolean类型,而存储数据库是NUMERIC类型,我们来实现自定义的类型转换器MyTypeHandler

    首先,需要实现TypeHandler接口,实现其中的4个方法。

       这几个方法中,setParameter 方法用于将POJO对象中的特定属性转换成数据库中某种属性,本案例中就是将Boolean转换成int型写入数据库。

      而getResult 方法则是将数据库中取到的结果转换成POJO对象中的指定(比如本案例Boolean属性

    完成了特殊类型转换器的实现,我们只需要在核心配置文件中进行配置注册即可。如下所示。

02


测试

    首先我们先看一下我们的POJO 对象,本次是修改了dept 部门的对象和数据库表字段。

       再来配置一下DeptMapper.xml 映射文件,这里我们插入一条数据。

    接着编写接口函数,接口函数名就是上面配置的insert 标签中的id,如下所示。

    最后,看一下测试内容和结果。

      测试结果为:

03


总结

     总的来说自定义类型转换器只要实现TypeHandler 接口,然后在核心配置文件中进行配置注册即可。当对象转换的时候遇到这种场景,则自动调用注册好的类型转换器进行转换。

     除此以外,MyBatis 中还为我们准备了枚举类型转换器EnumTypeHandler

等基本的TypeHandler


文章转载自码农的修炼之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论