JAVA复制对象时,遇到属性名、类型不同。推荐使用mapstruct

如何使用mapstruct解决复制时属性名、类型不同的问题

1.引入pom包

        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.4.1.Final</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor -->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.4.1.Final</version>
        </dependency>
       

** 因为当在maven install时候会出现属性找不到错误。没有对生成的bean进行setter新的改变

       <!--解决lombok与mapstruct一起使用问题-->
       <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-mapstruct-binding</artifactId>
            <version>0.2.0</version>
            <scope>provided</scope>
        </dependency>

2.新建一个接口

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;

@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN)
public interface BeanCopyUtil {
    BeanCopyUtil INSTANCE = Mappers.getMapper(BeanCopyUtil.class);

    @Mapping(target = "workcode", source = "workCode")
    @Mapping(target = "planId", source = "groupid")
    @Mapping(target = "planType", source = "kqtype")
    @Mapping(target = "onCheckTime", source = "workbegintime")
    @Mapping(target = "offCheckTime", source = "workendtime")
    @Mapping(target = "restBeginTime", source = "sleepBeginTime")
    @Mapping(target = "restEndTime", source = "sleepEndTime")
    //AttendanceSheduleEntity是目标对象。GetAllShiftsResponse是源对象
    AttendanceSheduleEntity allShiftsToAttendanceShedule(GetAllShiftsResponse getAllShiftsResponse);

}
       

注意mapper的引用包

3.如何调用

GetAllShiftsResponse x = new GetAllShiftsResponse();
AttendanceSheduleEntity attendanceSheduleEntity = BeanCopyUtil.INSTANCE.allShiftsToAttendanceShedule(x);
       

注意BeanCopyUtil.INSTANCE

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值