网站开发 视频存在哪,学做美食的视频网站,互联网建设及服务领域信用建设,WordPress好看的博客主题有哪些一.为什么要转换实体类
通常在后端开发中经常不直接返回实体Entity类#xff0c;经过处理转换返回前端#xff0c;前端提交过来的对象也需要经过转换Entity实体才做存储。
二.怎么转换
使用的BeanUtils.copyProperties方法虽然可以实现转换#xff0c;但是比较粗暴#…一.为什么要转换实体类
通常在后端开发中经常不直接返回实体Entity类经过处理转换返回前端前端提交过来的对象也需要经过转换Entity实体才做存储。
二.怎么转换
使用的BeanUtils.copyProperties方法虽然可以实现转换但是比较粗暴不仅效率低下使用反射而且仅映射相同名的属性多数情况下还需要手动编写对应的转换方法实现。插件MapStruct以接口方法结合注解优雅实现对象转换MapStruct生成器生成代码以更贴近原生的Setter、Getter方法处理属性映射更为高效。
三.MapStruct的使用
如下示例
实体类User
Data
AllArgsConstructor
public class User {private int id;private String name;private int age;private String address;
}
转换后的类UserVO:
Data
public class UserVO {private String userName;private int age;
}
转换接口
Mapper
public interface UserConvert {UserConvert INSTANCE Mappers.getMapper(UserConvert.class);Mapping(source name, target userName)UserVO toVO(User entity);
}
使用方法
Test
public void contextLoads() {User user new User(0, Test, 1, 成都高新区);UserVO userVO UserConvert.INSTANCE.toVO(user);
}
如果有多个字段需要转换的话使用mappings注解如下
Mapper
public interface UserConvert {UserConvert INSTANCE Mappers.getMapper(UserConvert.class);Mappings({Mapping(source name, target userName),Mapping(target age, target age))})UserVO toVO(User entity);
}