通用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;
如需要存序号,可以使用自定义映射器;

相关文章
|
7月前
|
数据库
mybatisplus返回指定字段的两种方式
mybatisplus返回指定字段的两种方式
388 1
|
7月前
|
SQL XML Java
【mybatis】第二篇:@Select注解中加入字段判断
【mybatis】第二篇:@Select注解中加入字段判断
|
3月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
229 8
|
24天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
2月前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
62 1
|
5月前
|
Java 数据库连接 数据库
mybatis plus 更新值为null的字段
mybatis plus 更新值为null的字段
62 7
|
5月前
|
Java 数据库连接 mybatis
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
|
5月前
|
数据库
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
|
7月前
|
SQL Java 数据库连接
Mybatis Plus字段为空值时未更新解决方案
Mybatis Plus字段为空值时未更新解决方案
758 1
|
7月前
|
XML Java 数据库连接
MyBatis返回Map时值为null的字段会丢失
MyBatis返回Map时值为null的字段会丢失
132 2