环境是MyBatis + MyBatis Plus + MySQL 5.7 + SpringBoot 2.x。使用mybaits-plus的查询方法映射数据到对象时报错,错误信息在下面有贴。
异常代码:
List<WxPublicAccountInfo> list = wxPublicAccountInfoMapper.selectList(null);
先说一下我的解决方案,然后再介绍下情况。没时间看完的可以跳过后半段。
去除lombok注解,使用手动生成的get set方法和构造方法
然后开始介绍一下故事背景,先贴一下异常信息:
因为涉及公司隐私,打码内容等同于 'ABCD'
网上说的方案大概有下面几种:
- 映射对象中该字段和数据库该字段的类型对应不上,看评论,很多人确实是这个问题。但我遇到的问题并不是这个原因。
- 字段长度太长(我觉得这个根本不沾边)
因为数据库映射的类里会定制较多业务相关的构造方法,所以在最开始我删除了逆向生成的代码里的get和set。换成了 lombok
的 @Data
注解。我的 lombok
版本是 1.18.8
。我不太清楚是不是因为这个版本有bug还是我在数据库实体类里使用所以才有问题,后续有机会深入学习 lombok 原理的时候再作分析。
解决方法在上面已经给出来了,有知道原因的大佬欢迎留言告知,不胜感激。
惯例,厚颜无耻的放一下我的公众号,欢迎各位大佬来一起探讨技术,交流读书心得