首页 > 数据库 >巧妙使用mapstruct来解决数据库entiy到实体dto的映射关系

巧妙使用mapstruct来解决数据库entiy到实体dto的映射关系

时间:2024-06-11 15:25:21浏览次数:30  
标签:dto target mapstruct Mapping source import entiy org

1.引入mapstruct

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>

</dependency>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <scope>compile</scope>
</dependency>

2.定义接口


import com.jdl.jscaffold.dao.entity.*;
import org.mapstruct.Builder;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;


@Mapper(componentModel = "spring",
        builder = @Builder(disableBuilder = true))
public interface EntityDtoMapper {
    EntityDtoMapper instance = Mappers.getMapper(EntityDtoMapper.class);

    @Mapping(source = "id", target = "id")
    @Mapping(source = "createTime", target = "createTime")
    @Mapping(source = "updateTime", target = "updateTime")
    @Mapping(source = "createUser", target = "createUser")
    @Mapping(source = "updateUser", target = "updateUser")
    @Mapping(source = "yn", target = "yn")
    @Mapping(source = "version", target = "version")
    @Mapping(source = "jobTypeCode", target = "jobTypeCode")
    @Mapping(source = "jobTypeName", target = "jobTypeName")
    @Mapping(source = "jobTypeDesc", target = "jobTypeDesc")
    @Mapping(target = "jobParams", ignore = true)
    @Mapping(target = "tasks", ignore = true)
    @Mapping(source = "templateId", target = "templateId")
    JobDefineDto toJobDefineDto(JobDefine entity);
}

定义一个方法用于将JobDefine 对象转换为JobDefineDto 对象,并使用@Mapping注解指定映射字段
说明:
componentModel = "spring"
这个属性指定了生成的映射器应作为 Spring Bean 管理。这样,你可以在 Spring 应用程序中通过依赖注入来使用这个映射器。

componentModel = "spring":生成的映射器将被 Spring 容器管理。
其他可选值还包括 default(无特定组件模型)、cdi(Contexts and Dependency Injection)、jsr330(JSR-330 @javax.inject 注解)。
builder = @Builder(disableBuilder = true)
这个属性配置了 MapStruct 如何处理构建器(builder)模式。

disableBuilder = true:禁用构建器模式。如果你的目标对象有一个构建器(builder),但你不希望 MapStruct 使用它进行映射,你可以禁用它。
disableBuilder = false(默认值):启用构建器模式。如果目标对象有一个构建器,MapStruct 将使用它来创建目标对象。

3.使用

JobDefineDto xxxDto = EntityDtoMapper.instance.toJobDefineDto(jdEntity);

标签:dto,target,mapstruct,Mapping,source,import,entiy,org
From: https://www.cnblogs.com/PythonOrg/p/18242106

相关文章

  • XML-RPC实现WebService简单PHP程序示例 及 Closure闭包中的bind与bindTo方法的区别
    一、XML-RPC实现WebService简单PHP程序示例    WebService就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行WebService通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较......
  • MapStruct实体映射
            具体看这个MapStruct最详细的使用教程,别在用BeanUtils.copyProperties()_mapstruct教程-CSDN博客......
  • MapStruct高级用法
    MapStruct高级用法依赖注入(Usingdependencyinjection)@Mapper(componentModel=SPRING)publicinterfaceSpringMapper{SpringMapperMAPPER=Mappers.getMapper(SpringMapper.class);PersonDTOpersonDoToDTO(Personperson);}publicstaticfinalc......
  • MapStruct的介绍及入门使用
    一、痛点  代码中存在很多JavaBean之间的转换,编写映射转化代码是一个繁琐重复还易出错的工作。使用BeanUtils工具时,对于字段名不一致和嵌套类型不一致时,需要手动编写。并且基于反射,对性能有一定开销。Spring提供的BeanUtils针对apache的BeanUtils做了很多优化,整体性能提升了不......
  • FreeSWITCH使用soundtouch进行变声
    操作系统:CentOS7.6_x64FreeSWITCH版本:1.10.9  FreeSWITCH里面有个mod_soundtouch模块,支持通话实时变声,今天整理下CentOS7环境下如何使用soundtouch进行实时变声,并提供相关效果演示及资源下载。我将从以下几个方面进行展开:soundtouch介绍基于文件的变声mod_soundtouc......
  • MapStruct对象映射转换
    前言2024.05.26,项目中用到了MapStruct,今天对项目中的一个实体类进行改动,发现不起作用,一顿排查下来发现是MapStruct搞错的,因此打算系统整理一下MapStruct的用法。介绍在实际开发中我们经常需要做DTO、VO、Entity对象之间的转换,在开发中常见的做法有两种:手动get、set使用Bean......
  • 关于对于Java中Entity以及VO,以及DTO中Request对象序列化的学习
    关于Serializable的探讨前提引入是由于软件测试上有同学提到说,什么该字段在程序刚运行时,导致jvm激增,所以吸引了我的注意回顾代码MybatisPlusGenerator自动生成的entity中就经常带有这个,而且我在开发代码的时候VO,以及DTO常常是直接复制对应的entity,所以也保不齐我对应......
  • IfcLoopHeadToTail
    IfcLoopHeadToTail函数定义如果对于输入边循环的边,每条边的结束顶点与其后续边的开始顶点相同,则此函数返回TRUE。IFC2x2中的新功能 EXPRESSSpecificationFUNCTIONIfcLoopHeadToTail(ALoop:IfcEdgeLoop):LOGICAL;LOCALN:INTEGER;P:LOGICAL:=TRU......
  • java EasyExcel 导出不同dto到多sheet,同时有动态字段,分页写入方案,解决存在oom的问题
    思路 1将一次查询数据改成分页查询,比如一次2000条,2将每次查询的数据按业务分组计算每类业务动态列追加的最大次数treeMap追加列2在excel列表头则是追加2列,名称自定义,我这边是补数字,示例追加列1,追加列2我的业务是按数据库存放的图片来确定最大追加列,需要将图片......
  • nestjs 中管道的使用-验证DTO
    1.安装管道nestgpirole意思是安装一个role模块的管道2.在controller中使用管道 管道的作用:1.数据的转换2.DTO规则验证 一般使用全局配置管道 区别:自己写:需要一个个的带入 ......