mybatis-自定义TypeHandler 的坑

1,701 阅读1分钟

1、场景

  • 接口返回对象或Map对数据进行修改
  • 查询的数据对日期类型格式化
  • 返回对象中返回自定义的数据字典

2、坑、自定义之后也无效的问题

  • 对于返回map类型,数据为NULL的字段,修改无效,因为rs.wasNull()进行了判断。字段为null,则直接返回null

3、讲解

BaseTypeHandler implements TypeHandler 通过getResult方法调用实际接口, 模板模式

4、代码

TypeHandler的类型,处理什么类型的数据

@MappedTypes(value = {  String.class})
@MappedJdbcTypes(value = JdbcType.VARCHAR, includeNullJdbcType = true)
public class EmptyStringIfNull extends BaseTypeHandler<String> {

配置文件加载handler包:

mybatis.type-handlers-package=com.lbc.web.util

字段值为null,也返回null的问题,重写getResult,去掉

rs.wasNull() ? null : result;