MapStruct

MapStruct

参考

juejin.cn/post/714014...

maven 依赖

xml 复制代码
  <dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>1.5.0.Final</version>
</dependency>
<dependency>
  <groupId>org.mapstruct</groupId>
  <artifactId>mapstruct-processor</artifactId>
  <version>1.5.0.Final</version>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId> 
  <version>1.18.12</version>
</dependency>

首先定义UserPo和UserEntity

UserPo和UserEntity的属性类型和名称完全相同。

java 复制代码
package mapstruct;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserPo {
    private Long id;
    private Date gmtCreate;
    private Date createTime;
    private Long buyerId;
    private Long age;
    private String userNick;
    private String userVerified;
}
java 复制代码
package mapstruct;

import lombok.Data;

import java.util.Date;

@Data
public class UserEntity {
    private Long id;
    private Date gmtCreate;
    private Date createTime;
    private Long buyerId;
    private Long age;
    private String userNick;
    private String userVerified;
}

定义转换接口

定义mapstruct接口,在接口上打上@Mapper注解。

接口中有一个常量和一个方法,常量的值是接口的实现类,这个实现类是Mapstruct默认帮我们实现的,下文会讲到。定义了一个po2entity的转换方法,表示把入参UserPo对象,转换成UserEntity。

注意@Mapper是Mapstruct的注解,不要引错了。

java 复制代码
package mapstruct;

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

@Mapper
public interface IPersonMapper {
    IPersonMapper INSTANCE = Mappers.getMapper(IPersonMapper.class);
    UserEntity po2entity(UserPo userPo);
}

测试类

创建一个UserPo对象,并使用Mapstruct做转化。

java 复制代码
package mapstruct;


import org.springframework.beans.BeanUtils;

import java.util.Date;
public class MapStructTest {
    public static void main(String[] args) {
        testNormal();
    }

    public static void testNormal() {
        System.out.println("-----------testNormal-----start------");
        UserPo userPo = UserPo.builder()
                .id(1L)
                .gmtCreate(new Date())
                .buyerId(666L)
                .userNick("测试mapstruct")
                .userVerified("ok")
                .age(18L) 
                .build();
        System.out.println("1234" + userPo);
        UserEntity userEntity = IPersonMapper.INSTANCT.po2entity(userPo);
        System.out.println(userEntity);
        System.out.println("-----------testNormal-----ent------");
    }
}
相关推荐
盖世英雄酱581366 小时前
深入探索 Java 栈
java·后端
IT果果日记6 小时前
Flink+Dinky实现UDF自定义函数
大数据·后端·flink
华仔啊6 小时前
Java异常处理别再瞎搞了!阿里大神总结的 9 种最佳实践,让你的代码更健壮!
java·后端
武子康7 小时前
大数据-87 Spark 实现圆周率计算与共同好友分析:Scala 实战案例
大数据·后端·spark
zjjuejin7 小时前
Docker 数据卷管理完全指南:持久化数据的艺术与科学
后端·docker
成书平7 小时前
简单入门 mcp server
后端
追逐时光者7 小时前
.NET 使用 CsvHelper 快速读取和写入 CSV 文件
后端·.net
_新一7 小时前
Go Context源码学习
后端·go
金銀銅鐵8 小时前
[Java] 浅析 Set.of(...) 方法
java·后端