通用mapper(tk.mybatis) 使用Enum枚举类型字段的注意事项

简介: 通用mapper(tk.mybatis) 使用Enum枚举类型字段的注意事项

我的实体类

在这里插入图片描述

问题

我的实体类中定义了一个枚举类型的字段,发现插入数据和查询数据时,都会忽略该字段;
在这里插入图片描述
插入时的实体传参有值,数据库中为null;
手动在数据库设置值,然后查询出来的数据该字段也为null;

排查

关于这块的资料都比较少,所以只好自己来debug源码找问题了;
为什么这个字段会被参数处理器与结果处理器都忽略掉呢?
源码:
tk.mybatis.mapper.mapperhelper.EntityHelper#initEntityNameMap
在这里插入图片描述
tk.mybatis.mapper.mapperhelper.resolve.DefaultEntityResolve#resolveEntity
在这里插入图片描述
如果启用了简单类型,就做简单类型校验,如果不是简单类型,直接跳过:
config.isUseSimpleType() 对应的字段:
在这里插入图片描述

解决

所以,我尝试在实体类加上了 @Column 后,问题解决了
在这里插入图片描述

数据库终于有值了:
在这里插入图片描述
只不过我这里是用的缺省处理器 EnumTypeHandler,所以存的是枚举类的name;
如需要存序号,可以使用自定义映射器;

相关文章
|
1月前
|
数据库
mybatisplus返回指定字段的两种方式
mybatisplus返回指定字段的两种方式
32 1
|
5月前
|
SQL 数据库
MyBatisPlus-null判定及查询指定字段
MyBatisPlus-null判定及查询指定字段
250 0
|
5月前
|
Java 数据库连接 开发者
Mybatis Plus公共字段自动填充(MyMetaObjectHandler)
Mybatis Plus公共字段自动填充(MyMetaObjectHandler)
136 0
|
24天前
|
SQL XML Java
【mybatis】第二篇:@Select注解中加入字段判断
【mybatis】第二篇:@Select注解中加入字段判断
|
3天前
|
SQL Java 数据库连接
Mybatis Plus字段为空值时未更新解决方案
Mybatis Plus字段为空值时未更新解决方案
|
24天前
|
XML Java 数据库连接
MyBatis返回Map时值为null的字段会丢失
MyBatis返回Map时值为null的字段会丢失
|
1月前
|
数据库
MybatisPlus属性字段为数据库关键字
MybatisPlus属性字段为数据库关键字
14 0
|
2月前
|
Java 数据库连接 mybatis
mybatis plus字段为null或空字符串把原来的数据也更新了,只需要注解
mybatis plus字段为null或空字符串把原来的数据也更新了,只需要注解
22 0
|
5月前
|
SQL 存储 Java
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
36 0
|
5月前
|
SQL Java 数据库连接
解决Mybatis当实体类中的属性名和表中的字段名不一致的问题
解决Mybatis当实体类中的属性名和表中的字段名不一致的问题
47 0