目录
概述
MapStruct的特性
MapStruct的基础使用流程
1.引用依赖:首先在项目中引入相关依赖(如Maven或Gradle)
2.创建两个对象,用于bean转换
3.创建一个映射接口:添加注解 @Mapper 声明需要映射的方法。
4.编译后可以在target下看到生成的代码
5.在业务代码中直接使用即可
MapStruct的高级特性
1.Spring托管:
2.复杂函数转换:
MapStruct常见问题解答:
1.MapStruct 和 lombok的版本兼容性问题:
2.定义mapping后不生效的问题:
3.其他注意到问题:
概述
MapStruct是一个代码生成器,它大大简化了Java bean类型之间映射的实现。他生成的映射代码使用纯方法调用,因此快速,类型安全且高效。
官网地址:MapStruct – Java bean mappings, the easy way!
MapStruct的特性
根据官网的描述和介绍,我们可以得出以下结论:
- 快速:MapStruct会生成基础的get/set方法,基于纯方法调用,避免了复杂的反射处理,大大提高了工作效率
- 类型安全:MapStruct在编译期检查映射规则,确保源对象和目标对象的之间的属性映射是类型安全的。如果规则不完整或者规则异常,可以在编译器提前发现问题,避免运行时异常
- 易于理解/开发:MapStruct的代码简单易懂很容易上手,而且也支持通过各种复杂规则的开发,包括深拷贝和自定义转换函数
MapStruct的基础使用流程
1.引用依赖:首先在项目中引入相关依赖(如Maven或Gradle)
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.5.2.Final</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.2.Final</version><scope>provided</scope></dependency>
2.创建两个对象,用于bean转换
@Data
public class UserEntity {private String userName;private String account;private String password;}@Data
public class UserPo {private String userName;private String account;private String password;}
3.创建一个映射接口:添加注解 @Mapper 声明需要映射的方法。
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;@Mapper
public interface UserConverter {UserConverter INSTANCES = Mappers.getMapper(UserConverter.class);UserEntity po2Entity(UserPo userPo);UserPo entity2Po(UserEntity userEntity);List<UserEntity> po2Entity(List<UserPo> userPo);List<UserPo> entity2Po(List<UserEntity> userEntity);}
4.编译后可以在target下看到生成的代码
5.在业务代码中直接使用即可
/*** 创建用户** @param entity 用户对象* @return 结果*/@Overridepublic boolea