
MapStruct使用工具类中的方法来映射字段
发布日期:2025-04-12 00:32:17
浏览次数:9
分类:精选文章
本文共 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的灵活性,又使数据处理逻辑更加集中,便于维护和扩展。
发表评论
最新留言
很好
[***.229.124.182]2025年05月13日 01时42分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
load和DOMContenLoaded的区别
2025-04-11
localhost:5000在MacOS V12(蒙特利)中不可用
2025-04-11
locals 和 globals
2025-04-11
localStorage使用总结
2025-04-11
location.href表示当前访问的网址url
2025-04-11
location优先级别问题
2025-04-11
Lock 锁底层实现
2025-04-11
Lock和synchronized区别(以及Lock的使用)
2025-04-11
Lock锁精讲
2025-04-11
Locust性能测试 —— 环境搭建及使用
2025-04-11
lodash常用API
2025-04-11
Log4j 1使用教程
2025-04-11
Log4j XML 配置
2025-04-11
Log4j 被曝核弹级漏洞,开发者炸锅了
2025-04-11
Log4j.xml和Log4j2.xml的简单认识 - log4j2/log4j的区别
2025-04-11
Log4j2 中format增加自定义的参数
2025-04-11
Log4j2 消停了,Logback 开始塌房了?
2025-04-11
log4j分离日志输出 自定义过滤 自定义日志文件
2025-04-11