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

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);
posted @   SpecialSpeculator  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2021-06-11 第三部分-并发设计模式34:WorkThread 设计模式
点击右上角即可分享
微信分享提示