MybatisPlus报错Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

省流:加了@Builder导致报错。

需再加两个注解@NoArgsConstructor@AllArgsConstructor

问题

报下标越界,持久化异常

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 3

分析

先排查sql是否错误。复制打印的sql,可以查询出数据。sql正确。

既然sql可以查到数据,那就只能从mybatis实体映射的角度出发来考虑

@Data
@Builder
public class Org{
    private String id;
    private String orgCode;
    private String orgName;
    private Date createTime;
    private Date updateTime;
}

因为这里使用了lombok插件。如果不使用lombok,实体类中只需要有getter和setter方法即可。

那很有可能是lombok导致。

看下编译后的class文件,发现只有一个全参构造,没有无参构造。

mybatis将查询结果映射成实体时是通过无参构造获得一个实例,然后调用setter方法将值存入字段

解决方法

在实体类增加注解@NoArgsConstructor@AllArgsConstructor,使编译器编译的时候提供出无参构造。

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor

注意:因为使用@Builder注解,所以光添加一个@NoArgsConstructor,程序会编译报错,builder需要一个全参构造,所以还得加上@AllArgsConstructor

记录项目Mybatis出现报错Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 9 out of_初心绘流年的博客-CSDN博客

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

globalcoding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值