真正理解和使用Mybatis自定义转换器
Mybaits 是一个映射文件框架,映射就是 java对象字段和数据库表字段进行映射,比如设置参数阶段 PreparedStatement 或者 对查询结果映射ResultSet ,就会使用TypeHandler来处理。
Mybatis 默认的转换器
如果真实开发中有int需要和string相互对应的变态需求,或者String转String,但是需要额外做一些处理,那么默认类型转换器就无法实现,需要我们自定义类型转换器
自定义转换器必须实现一个接口 TypeHandler<T>
方法说明
setParameter:在拼接生成SQL的时候被调用
getResult(ResultSet, String):按列名,拿到值封装成java bean对象
getResult(ResultSet, int):按索引,拿到值封装成java bean对象
getResult(CallableStatement, int):按存储过程,拿到值封装成java bean对象
那setParameter方法为例:
作用就是String转String,只不过如果值是"LiuYork",那么就把值用 [ ] 符号括起来
自定义转换器好了以后,需要使之生效有两个种方式
全局生效
需要在mybatis配置文件中添加自定义转换器
局部生效
- query
查询中,我们对数据库查询结果封装到 java bean 字段,使用 resultMap 标签
- update
对于 insert update delete 操作,需要使用自定义转换器,则直接指明类型即可,以 inert 为例
建议:如果使用自定义转换器,作用域最好控制在单个select-update范围,不要设置为全局,因为mybatis已经实现了绝大部分的转换器,采用默认的就好 !!!
mybatis 核心配置类
测试类Demo
数据库测试结果
数据库建表语句