博客
关于我
MapStruct使用工具类中的方法来映射字段
阅读量:797 次
发布时间:2023-02-07

本文共 1487 字,大约阅读时间需要 4 分钟。

在开发过程中,当从数据库获取的数据需要经过处理后返回给前端时,直接使用MapStruct进行映射往往无法实现所需的数据转换需求。例如,数据库存储的价格单位通常是分,但前端需要以元为单位呈现。这就需要我们编写工具类和方法来处理数据转换。

解决方案

为解决上述问题,我们可以编写一个工具类MoneyConverterUtil,其中包含一个方法fenToYuan,用于将分转换为元。该方法的实现如下:

public class MoneyConverterUtil {    public static BigDecimal fenToYuan(BigDecimal fen) {        return fen.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);    }}

接下来,我们可以在MapStruct映射中使用该方法来转换相应的字段。以下是一个示例的Mapper接口:

import org.mapstruct.Mapper;import org.mapstruct.Mapping;import org.mapstruct.Mappings;import org.mapstruct.factory.Mappers;@Mapperpublic interface TariffPackageMapper {    TariffPackageMapper INSTANCE = Mappers.getMapper(TariffPackageMapper.class);    @Mappings({        @Mapping(target = "purchaseCostPrice",                expression = "java(com.sundark.common.utils.MoneyConverterUtil.fenToYuan(source.getPurchaseCostPrice()))"),        @Mapping(target = "resourceCostPrice",                expression = "java(com.sundark.common.utils.MoneyConverterUtil.fenToYuan(source.getResourceCostPrice()))")    })    TariffPackageResponse doToResponse(TariffPackage source);}

注意事项

在上述实现中,需要注意以下几点:

  • 类路径指定:确保MoneyConverterUtil类的全类名com.sundark.common.utils.MoneyConverterUtil在映射表达式中正确指定,避免类路径不解的错误。

  • 表达式语法:在@Mapping注解的expression属性中,确保使用正确的Java表达式格式,避免语法错误。

  • 工具类方法的调用:确保工具类方法fenToYuan能够正确接收和返回数据类型,避免类型转换错误。

  • 性能优化:MapStruct生成的实现类会根据映射规则动态调用工具类方法,因此在高频调用的场景中,建议对工具类方法进行适当的缓存处理,以提升性能。

  • 总结

    通过以上方法,我们可以在MapStruct映射中轻松地调用自定义的工具类方法,完成数据转换任务。这种方式既保持了MapStruct的灵活性,又使数据处理逻辑更加集中,便于维护和扩展。

    转载地址:http://jgufk.baihongyu.com/

    你可能感兴趣的文章
    log4j补充
    查看>>
    Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合
    查看>>
    logback.xml 配置详解(1)
    查看>>
    logback配置文件详解
    查看>>
    logging.config报错FileNotFoundError
    查看>>
    Logstash input jdbc连接数据库
    查看>>
    logstash mysql 准实时同步到 elasticsearch
    查看>>
    Logstash是什么,干什么用的?带你详细认识
    查看>>
    Logstash简介和部署---ElasticStack(ELK)工作笔记019
    查看>>
    logstash设置开机自启动
    查看>>
    Logstash语法入门
    查看>>
    loj #6485. LJJ 学二项式定理 (模板qwq)
    查看>>
    Loj 6285. 数列分块入门 9
    查看>>
    Lombok的使用及其原理
    查看>>
    Lua,Lua API,配置文件
    查看>>
    lumen开发问题:Call to undefined method Illuminate\Validation\Validator::make()
    查看>>
    luogu P1268 树的重量
    查看>>
    Luogu P2326 AKN's PPAP【按位贪心】
    查看>>
    LUOGU P4095 [HEOI2013]Eden 的新背包问题
    查看>>
    Luogu2973:[USACO10HOL]赶小猪
    查看>>