实体映射工具MapStruct简单使用
一、MapStruct是什么?
MapStruct是一个代码生成器,它基于约定优于配置的方法,极大地简化了Java bean类型之间映射的实现。生成的映射代码使用普通方法调用,因此快速、类型安全且易于理解。
二、使用步骤
1.通过maven引入
pom文件配置:
<!-- 版本定义 -->
<properties>
<mapstruct.version>1.5.3.Final</mapstruct.version>
</properties>
<!-- mapStruct依赖引入 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
2.定义实体类
User用户
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
public class User implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 账户
*/
private String account;
/**
* 手机号
*/
private String mobile;
}
登录用户LoginUserInfo
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
public class LonginUserInfo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private String id;
private String account;
private String userName;
private String mobile;
}
3、定义转换接口
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
@Mapper
public interface LoginUserConvert {
LoginUserConvert INSTANCES = Mappers.getMapper(LoginUserConvert.class);
@Mappings({@Mapping(source = "username", target = "userName")})
LonginUserInfo convert(User user);
default LoginUserInfo defaultConvert() {
return new LoginUserInfo();
}
}
调用方式
Long id = 0L;
User user = userService.getById(id);
LoginUserInfo loginUserInfo = LoginUserConvert.INSTANCES.convert(user);