真正理解和使用Mybatis自定义转换器

Mybaits 是一个映射文件框架,映射就是 java对象字段和数据库表字段进行映射,比如设置参数阶段 PreparedStatement 或者 对查询结果映射ResultSet ,就会使用TypeHandler来处理。

Mybatis 默认的转换器

真正理解和使用Mybatis自定义转换器

 

如果真实开发中有int需要和string相互对应的变态需求,或者String转String,但是需要额外做一些处理,那么默认类型转换器就无法实现,需要我们自定义类型转换器

自定义转换器必须实现一个接口 TypeHandler<T>

真正理解和使用Mybatis自定义转换器

方法说明

setParameter:在拼接生成SQL的时候被调用

getResult(ResultSet, String):按列名,拿到值封装成java bean对象

getResult(ResultSet, int):按索引,拿到值封装成java bean对象

getResult(CallableStatement, int):按存储过程,拿到值封装成java bean对象

那setParameter方法为例:

真正理解和使用Mybatis自定义转换器

作用就是String转String,只不过如果值是"LiuYork",那么就把值用 [ ] 符号括起来

自定义转换器好了以后,需要使之生效有两个种方式

全局生效

需要在mybatis配置文件中添加自定义转换器

真正理解和使用Mybatis自定义转换器

 

局部生效

  • query 

查询中,我们对数据库查询结果封装到 java bean 字段,使用 resultMap 标签

真正理解和使用Mybatis自定义转换器

  • update

对于 insert update delete 操作,需要使用自定义转换器,则直接指明类型即可,以 inert 为例

真正理解和使用Mybatis自定义转换器

建议:如果使用自定义转换器,作用域最好控制在单个select-update范围,不要设置为全局,因为mybatis已经实现了绝大部分的转换器,采用默认的就好 !!!

mybatis 核心配置类

真正理解和使用Mybatis自定义转换器

测试类Demo

真正理解和使用Mybatis自定义转换器

数据库测试结果

真正理解和使用Mybatis自定义转换器

数据库建表语句

真正理解和使用Mybatis自定义转换器