mybatis+lombok出现java.lang.IndexOutOfBoundsException错误及解决
mybatis+lombok出现java.lang.IndexOutOfBoundsException
问题描述

就是一个简单的select语句,拿出来单独运行也是OK的。
select s.sid,s.title,s.url,s.icon,s.cate_id from sites s
跟进错误栈调试发现,报错是因为mybatis要把select出来的字段包装成Java对象时,找不到其构造函数中对应的字段。
构造函数为啥这5个字段呢。就是因为用了lombok的@Builder方法,这个注解生成了全参的构造函数,但没有这5个参数的构造器。

这里for循环constructor.getParameterTypes().length就是全参构造器的参数数量,我这里是11个。rsw.getColumnNames().get(i)越界报错。
解释一下:
rsw是mybatis运行sql得到的列,我这里有5个。所以当i循环超过5时,get(i)会越界。
解决方案
- 知道原因就知道如何解决了。这里我们需要有无参构造函数。
- 于是在@Builder上面加@NoArgsConstructor就行了,但是编译不过。
- 因为@Builder自带的全参构造器是会被覆盖的,所以这时候再加@AllArgsConstructor才可以。
最终结果:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解Spring中singleton bean如何同时服务多个请求
这篇文章主要介绍了详解Spring中singleton bean如何同时服务多个请求2023-02-02
关于eclipse安装spring插件报错An error occurred while collecting item
这篇文章主要介绍了关于eclipse安装spring插件报错An error occurred while collecting items to be installed...解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08
使用Spring Expression Language (SpEL)全面解析表达式
这篇文章主要介绍了使用Spring Expression Language (SpEL)全面解析表达式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02
Java Big Number操作BigInteger及BigDecimal类详解
这篇文章主要为大家介绍了Java Big Number操作BigInteger及BigDecimal类详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-07-07


最新评论