踩坑系列—mybatis查询报错java.lang.IndexOutOfBoundsException

博客详细介绍了在使用MyBatis进行查询时遇到的错误,错误信息显示为`IndexOutOfBoundsException`。问题根源在于DoxxxDto类使用了Lombok的注解,但缺少无参构造函数,导致转换查询结果时出错。添加@NoArgsConstructor注解后,问题得到解决。博客提供了详细的解决方案,并给出了修正后的DoxxxDto类代码。
摘要由CSDN通过智能技术生成

sql单独执行正确,但是mybatis查询报错,部分错误信息如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
###Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
###The error may involve com.xxx.persistence.mapper.XXXMapper.countxxxQty
###The error occurred while handling results
###SQL: SELECT D.WAREHOUSE_ID, D.SKU_ID, D.EXPECTED_QTY_NUM, D.NAME, D.OPER,D.OPER_TIME FROM do_header D WHERE D .do_type = 100 and D.sku_id in ( ? , ? , ? , ? )
###Cause: java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
at org.mybatis.spring.SqlSessionTemplate S q l S e s s i o n I n t e r c e p t o r . i n v o k e ( S q l S e s s i o n T e m p l a t e . j a v a : 440 ) a t c o m . s u n . p r o x y . SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) at com.sun.proxy. SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)atcom.sun.proxy.Proxy106.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93)
at com.sun.proxy.$Proxy241.countSkuQtyForCalculate(Unknown Source)

原因:
mapper中查询结果resultMap对应的DoxxxDto使用了lombok注解,使用有误导致的。报错时的注解:
@Data
@Builder
public class DoxxxDto{
private xxx1;
private xxx2;
private xxx3;
private xxx4;
private xxx5;
private xxx6;
private xxx7;
}

没有构造函数,将查询结果转换成javebean的时候出了问题,报错中的6是因为查询了6列。加上构造函数的注解即可。如下:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DoxxxDto{
private xxx1;
private xxx2;
private xxx3;
private xxx4;
private xxx5;
private xxx6;
private xxx7;
}

参考博客地址:https://blog.csdn.net/qq_37186947/article/details/102160260

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值