mybatis + lombok 出现 java.lang.IndexOutOfBoundsException
问题描述
在调用mybatis的查询语句时,报以下错误

但是这个查询语句单独查询是没有问题的
select id, name, mobile
FROM yca_appointment_user
WHERE weixin_openid = 'ovMet5I-_hDyMfBYFmPjKfXP8s' and del_flag = 0
LIMIT 1;
结果:
id name mobile
2 null null
debug调试时发现还没有进Mapper语句就报错了
后面在网上查找了下相关问题(可以参考 https://blog.youkuaiyun.com/qq_37186947/article/details/102160260),发现是是因为mybatis要把select出来的字段包装成Java对象时,找不到其构造函数中对应的字段。就是因为用了lombok的@Builder方法,这个注解生成了全参的构造函数,但没有这3个参数的构造器。

关于@Builder的用法可以参考该博文:

在mybatis使用lombok的@Builder注解时,出现java.lang.IndexOutOfBoundsException。原因是mybatis在实例化对象时找不到无参构造器。解决方案是在@Builder上添加@NoArgsConstructor,并为避免覆盖全参构造器,还需添加@AllArgsConstructor。通过这种方式,可以解决mybatis无法正确构建对象的问题。
最低0.47元/天 解锁文章
2537

被折叠的 条评论
为什么被折叠?



