【JAVA】Mybatis使用resultMap的坑
·
一、场景
使用lombok 的 @Data、@Builder注解的实体类,在接受Mybatis的查询结果映射时,会出现数据问题。如下所示:
-
实体类

-
xml
特别说明:xml里面的字段和数据库的字段顺序不一致
-
数据库

-
查询映射结果
memo字段也映射上了安徽

-
调试跟踪
此处的autoMapping的映射顺序是和xml中的sql一致的

二、原因
当实体类只使用了 @Data、@Builder注解后,会导致实体类不会生成空参构造方法,只会生成全参数构造方法,并且还是private修饰的,如下图:

因为使用的是全参数的构造方法,所以在对实体类进行赋值的时候,会导致SQL值和实体类的属性之间的映射的差异,导致对象中的数据与数据库的数据对应不上的问题。
三、解决方案
如果使用了lombok,则在实体类中加入全参、无参构造注解(@NoArgsConstructor、@AllArgsConstructor)即可
更多推荐



所有评论(0)