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

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

Mybatis 默认的转换器

真正理解和使用Mybatis自定义转换器_第1张图片

 

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

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

真正理解和使用Mybatis自定义转换器_第2张图片

方法说明

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

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

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

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

那setParameter方法为例:

真正理解和使用Mybatis自定义转换器_第3张图片

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

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

全局生效

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

真正理解和使用Mybatis自定义转换器_第4张图片

 

局部生效

  • query 

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

真正理解和使用Mybatis自定义转换器_第5张图片

  • update

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

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

mybatis 核心配置类

真正理解和使用Mybatis自定义转换器_第6张图片

测试类Demo

真正理解和使用Mybatis自定义转换器_第7张图片

数据库测试结果

数据库建表语句

真正理解和使用Mybatis自定义转换器_第8张图片

 

 

你可能感兴趣的:(mysql,mybatis)