mybatis自定义类型处理器
其实使用MySQL或Oracle数据库很少会遇到自定义类型处理器的情况,之前是因为项目中使用了PGSQL才接触到这块的,这里简单做一下记录
-
要创建一个自定义的类型处理器,就需要继承BaseTypeHandler类或者实现TypeHandler接口(至于他俩的区别,说是BaseTypeHandler已经提供了一些基础实现,建议优先使用这个,这个没研究),重写其中的方法,如下图
我这里创建的是针对String类型的类型处理器,在每个方法调用时做了简单的打印 -
然后在XML中应用即可 ,非常简单
红色箭头指定的地方就是我指定自定义类型处理器的地方,这里查找和更新方法中的name字段应用了自定义类型处理器 -
调用方法测试
成功打印日志,这里说明已经成功应用了。我这里只是做了很简单的例子,实际上你需要在重写的方法中根据你的业务进行相应的处理
tips 关于mybatisPlus使用类型处理器的一些注意点
- MP直接在实体类的属性上打
@TableField(typeHandler = JacksonTypeHandler.class)
类似这样的注解并指定类型处理器的class即可,记得将@TableName
的autoResultMap = true
给设置上,不然不会生效。个人认为是你显式的使MP框架自动生成一个ResultMap,这个ResultMap和我们使用Mybatis框架里的XML的ResultMap是一样的,并且由于你打了注解,MP会自动的把类型处理器给放入到ResultMap里,原理和Mybatis是一样的,所以你不开autoResultMap = true
就无法生效, - 这个
@TableField(typeHandler = JacksonTypeHandler.class)
仅仅生效于MP自带的那些方法,如果是自己在XML写的SQL是不会生效的,还是需要你指定类型处理器。所以我感觉比较坑b,多此一举