MapStruct 概述
MapStruct 是一个用于生成映射器接口的代码生成库,主要用于简化 Java 对象之间的转换过程。在处理不同模型之间数据转换时,MapStruct 可以自动生成实现类减少手工转换逻辑的工作量。
使用步骤:
MapStruct 使用例子
列举一种最简单的mapstruct的使用,dto->entity的转换
UserDTO
@Data
public class UserDTO {
private String name;
private int age;
}
UserEntity
@Data
public class UserEntity {
private String username;
private int userAge;
}
UserDTOConverter ( mapstruct 接口)
@Mapper
public interface UserModelConverter {
UserModelConverter INSTANCE = Mappers.getMapper(UserModelConverter.class);
UserEntity convertDtoToEntity(UserDTO dto);
UserDTO convertEntityToDto(UserEntity entity);
}
UserModelConverterImpl (自动生成)
public class UserModelConverterImpl implements UserModelConverter {
@Override
public UserEntity convertDtoToEntity(UserDTO userDto) {
if ( userDto == null ) {
return null;
}
UserEntity useEntity = new UserEntity();
useEntity.setUserName( userDto.getName() );
useEntity.setUserAge( userDto.getAge() );
return useEntity;
}
@Override
public UserDTO convertEntityToDto(UserEntity userEntity) {
if ( userEntity == null ) {
return null;
}
UserDTO userDto = new UserDTO();
userDto.setName( userEntity.getUserName() );
userDto.setAge( userEntity.getUserAge() );
return userDto;
}
}
自动生成的impl类贴图:
Service 层使用
public class UserServiceImpl implements UserService {
@Override
public add(UserDTO userDto){
UserEntity userEntity = UserModelConverter.INSTANCE
.convertDtoToEntity(userDto);
}
}
更详细的用法,可以参考