博客
关于我
MapStruct使用工具类中的方法来映射字段
阅读量:799 次
发布时间: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/

    你可能感兴趣的文章
    MFC工作笔记0002---MFC HelloWorld程序
    查看>>
    MFC工作笔记0003---WindowsAPI与MFC的关系
    查看>>
    MFC工作笔记0004---MFC中afx_msg是什么,afx_msg void function()是什么意思
    查看>>
    MFC工作笔记0005---::在vc++中是什么意思
    查看>>
    MFC工作笔记0006---#pragma warning(disable:4996)是什么意思
    查看>>
    MFC工作笔记0007---消息映射处理
    查看>>
    MFC工作笔记0008---UDP协议通信_sendto 和 recvfrom 浅析与示例
    查看>>
    MFC工作笔记0009---VC++中 PostMessage和SendMessage的区别
    查看>>
    MFC工作笔记0011---atoi的用法
    查看>>
    MFC常用函数
    查看>>
    MFC打印和打印预览功能
    查看>>
    MFC打造Java环境变量设置工具...
    查看>>
    MFC数据类型
    查看>>
    MFC显示JPG图片
    查看>>
    MFC模态对话框和非模态对话框
    查看>>
    MFC调用DOS窗口显示信息
    查看>>
    mha高可用
    查看>>
    MHA高可用架构与Atlas读写分离
    查看>>
    Miaoo朋友圈程序全完整版源码
    查看>>
    MicroJob 任务注册中心添加 Nacos 支持,升级 0.0.3 版本
    查看>>