需求:年度报告中加入月度报告,根据年度报告的yearReportId查询月度报告List
自定义返回值类型yearReportDTO.class
@Data
public class yearReportDto {
private Long yearReportId;
private String rootEntpCode;
private Integer year;
private Integer resultSource;
private Date gmtModified;
private Integer accountingMethodStatus;
private String uniqueCode;
private String filePath;
private BigDecimal outputValue;
private BigDecimal emissionIntensity;
private BigDecimal carbonEmissionsTotal;
private String industryName;
private String industryAndFill;
private List monthReportList;
}
xml文件
查询出年报告id
SELECT yr.id AS yearReportId, yr.root_entp_code AS rootEntpCode, yr.`year`, yr.result_source AS resultSource, yr.gmt_modified AS gmtModified, yr.accounting_method_status AS accountingMethodStatus, yr.unique_code AS uniqueCode, ywps.file_path AS filePath, ywps.output_value AS outputValue, ywps.emission_intensity AS emissionIntensity, ywps.carbon_emissions_total AS carbonEmissionsTotal, GROUP_CONCAt(ci.industry_name ORDER BY ci.id) AS industryName, GROUP_CONCAt(CONCAT_Ws(':',ci.id,rir.filling_mode)) AS industryAndFill FROM cmc_year_report AS yr LEFT JOIN cmc_year_whole_plant_statistics AS ywps ON yr.id = ywps.year_report_id LEFT JOIN cmc_year_report_industry_rela AS rir ON rir.report_id = yr.id LEFT JOIN cmc_industry AS ci ON ci.id = rir.industry_id WHERe yr.root_entp_code = #{rootEntpCode} AND yr.`status` = 1 and yr.result_source = #{resultSource} GROUP BY yr.id ORDER BY yr.`year` desc
返回自定义类型的映射
collection 中property的“monthReportList”和自定义类中List的命名对应
select的“listMonthReport”不需要用foreach包裹
原先是这样写的
然后返回类型映射,这里的column和property是自定义类命名
总结经验:resultMap和resultType的区别 认识不足
Mybatis的学习不扎实



