代码优化:使用 MapStruct 简化对象映射
代码优化:使用 MapStruct 简化对象映射
本文展示了如何使用 MapStruct 库来简化对象映射,以提高代码可读性和可维护性。示例代码展示了如何将 ComputeResultExportDTO 对象映射到 ComputeResultExportDTO 对象,并使用表达式来处理复杂映射关系。
@Mapper
public interface ComputeResultExportMapper {
@Mappings({
@Mapping(target = 'examineEvaluationId', source = 'computeResultExportDTO.examineEvaluationId'),
@Mapping(target = 'levelName', source = 'computeResultExportDTO.levelName'),
@Mapping(target = 'levelWeight', source = 'computeResultExportDTO.levelWeight'),
@Mapping(target = 'levelGroup', source = 'computeResultExportDTO.levelGroup'),
@Mapping(target = 'examineWight', source = 'computeResultExportDTO.examineWight'),
@Mapping(target = 'weightGroupName', source = 'computeResultExportDTO.weightGroupName'),
@Mapping(target = 'democraticTotalScore', source = 'computeResultExportDTO.democraticTotalScore'),
@Mapping(target = 'incorruptibleTotalScore', source = 'computeResultExportDTO.incorruptibleTotalScore'),
@Mapping(target = 'assessScore', source = 'computeResultExportDTO.assessScore'),
@Mapping(target = 'centennialScore', source = 'computeResultExportDTO.centennialScore'),
@Mapping(target = 'evaluationDimension', source = 'computeResultExportDTO.evaluationDimension'),
@Mapping(target = 'dimensionLevel', source = 'computeResultExportDTO.dimensionLevel'),
@Mapping(target = 'tableName', source = 'computeResultExportDTO.tableName'),
@Mapping(target = 'tableSort', source = 'computeResultExportDTO.tableSort'),
@Mapping(target = 'scoreWight', source = 'computeResultExportDTO.scoreWight'),
@Mapping(target = 'suggestedLevel', source = 'computeResultExportDTO.suggestedLevel'),
@Mapping(target = 'empNameGroup', source = 'computeResultExportDTO.empNameGroup'),
@Mapping(target = 'ranking', source = 'computeResultExportDTO.ranking'),
@Mapping(target = 'deptName', source = 'computeResultExportDTO.deptName'),
@Mapping(target = 'identity', source = 'computeResultExportDTO.identity'),
@Mapping(target = 'empName', source = 'computeResultExportDTO.empName'),
@Mapping(target = 'empCode', source = 'computeResultExportDTO.empCode'),
@Mapping(target = 'scoreItemId', source = 'computeResultExportDTO.scoreItemId'),
@Mapping(target = 'totalScore', source = 'computeResultExportDTO.totalScore'),
@Mapping(target = 'scores', expression = 'java(MapUtils.getObject(scoreGroup, computeResultExportDTO.getExamineEvaluationId(),Collections.emptyList()))'),
@Mapping(target = 'integrityScores', expression = 'java(MapUtils.getObject(honestScoreGroup, computeResultExportDTO.getExamineEvaluationId(),Collections.emptyList()))')
})
ComputeResultExportDTO convertToEntity(ComputeResultExportDTO computeResultExportDTO,
Map<String, List<BigDecimal>> scoreGroup,
Map<String, List<BigDecimal>> honestScoreGroup);
}
代码说明:
@Mapper注解标识该接口是一个 MapStruct 映射器。@Mappings注解用于定义多个映射关系。@Mapping注解用于定义单个映射关系,包括目标属性名称 (target) 和源属性名称 (source)。expression属性用于定义复杂映射关系,使用 Java 表达式来处理映射逻辑。
优点:
- 代码简洁:使用 MapStruct 可以避免手动编写繁琐的映射代码。
- 可读性强:使用声明式映射语法,代码更加易于理解和维护。
- 可维护性高:当数据结构发生变化时,只需要修改映射关系,无需修改大量代码。
总结:
MapStruct 库提供了一种简单、高效的方式来实现对象映射,可以有效地提高代码质量。在项目中,可以考虑使用 MapStruct 来简化对象映射操作。
原文地址: https://www.cveoy.top/t/topic/fdb4 著作权归作者所有。请勿转载和采集!