问题描述
mapper中的sql
@Select({"<script>",
"SELECT e.`name` as name ,SUM(mp.musk_yield) as muskYield " +
"FROM `musk_product` mp,enterprise e " +
"where mp.enterprise_id=e.id " +
"and mp.get_musk_datetime >= #{start} and mp.get_musk_datetime <= #{tmpEnd} " +
"group by enterprise_id",
"</script>"})
List<LinMuskDeerItem> getYieldByDate(LocalDate start, LocalDate tmpEnd);
LinMuskDeerItem类
package com.cxstar.dao.data.param.bo;
import lombok.Data;
@Data
public class LinMuskDeerItem {
private String name;
//数量
private Long larvaThisQuarterCount;
//麝香产量
private Double muskYield;
public LinMuskDeerItem(String name, Long larvaThisQuarterCount, Double muskYield) {
this.name = name;
this.larvaThisQuarterCount = larvaThisQuarterCount;
this.muskYield = muskYield;
}
public LinMuskDeerItem() {
}
}
照常来说查出来的数据会装载到List,但是报错
Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
The error may exist in com/cxstar/dao/data/repository/mapper/MuskProductMapper.java (best guess)
问题原因:
LinMuskDeerItem类为了赋值方便,我加了一个有参构造函数,因此在查出的数据装载到List中时,由于存在有参构造函数无法自动创建对象,所以造成该问题
解决方式:
LinMuskDeerItem类写一个无参构造方法即可解决