MapStruct

创建实现Java Bean之间转换的扩展映射器。

1.依赖

    <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.实体类

@Data
public class User {
    private Long id;
    private String username;
    private String email;
}
@Data
public class UserDto {
    private Long id;
    private String username;
    private String email;
}

3.映射

@Mapper
public interface UserMapper {

    UserDto userToUserDto(User user);
    User userDtoToUser(UserDto userDto);

    UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
}

构建/编译应用程序时,MapStruct注解处理器插件会识别出UserMapper 接口并为其生成一个实现类。
target/generated-sources/annotations 目录下生成实现类,类名为 UserMapperImpl。
@Override
public UserDto userToUserDto(User user) {
if ( user == null ) {
return null;
}

    UserDto userDto = new UserDto();

    userDto.setId( user.getId() );
    userDto.setUsername( user.getUsername() );
    userDto.setEmail( user.getEmail() );

    return userDto;
}

4.比较

4.1 BeanUtils.copyProperties

运行时拷贝:通过反射在运行时进行属性拷贝,性能较低

posted @ 2025-08-30 16:07  lwx_R  阅读(10)  评论(0)    收藏  举报