首页IT科技convert to rinex怎么转换数据(EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频)

convert to rinex怎么转换数据(EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频)

时间2025-07-30 07:31:51分类IT科技浏览4290
导读:一、序言 在实际项目开发过程中,总有数据实体类互相转换的需求,DO、BO、VO、DTO等数据模型转换经常发生。今天推荐几个好用的实体类转换工具,分别是EntityUtils MapStruct BeanCopier ,并且给出使用的案例。需要说明的是,本文有配套视频讲解。...

一             、序言

在实际项目开发过程中             ,总有数据实体类互相转换的需求                    ,DO                    、BO       、VO             、DTO等数据模型转换经常发生             。今天推荐几个好用的实体类转换工具       ,分别是EntityUtils MapStruct BeanCopier              ,并且给出使用的案例                    。需要说明的是                   ,本文有配套视频讲解       。

下面分别讲解这3种工具的使用      。

二                   、实战编码

(一)EntityUtils 1       、引入依赖

学习工具包源代码的朋友       ,请看这里                    。

<!--EntityUtils工具类包--> <dependency> <groupId>xin.altitude.cms</groupId> <artifactId>ucode-cms-common</artifactId> <version>1.5.8</version> </dependency> 2       、DO @Data @NoArgsConstructor @AllArgsConstructor @TableName(value = "tb_user") public class User { private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Long userId; private String userName; private Integer age; private Long deptId; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime gmtCreate; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime gmtModified; public User(User user) { if (Objects.nonNull(user)) { this.userId = user.userId; this.userName = user.userName; this.age = user.age; this.deptId = user.deptId; this.gmtCreate = user.gmtCreate; this.gmtModified = user.gmtModified; } } } 3                   、VO @Data @NoArgsConstructor public class UserVo extends User { private String deptName; private String tel; /** * 原生构造器来实现 DO 转 VO * * @param user */ public UserVo(User user) { super(user); } } 4             、转换 public List<UserVo> selectUserList1() { List<User> userList = this.list(); // 一行代码完成实体类转换 List<UserVo> userVoList = EntityUtils.toList(userList, UserVo::new); return userVoList; }

说明一下       ,使用EntityUtils工具类最主要的是处理DO       、VO等数据类构造器             。

(二)MapStruct 1                    、引入依赖 <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.5.3.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.5.3.Final</version> </dependency> 2             、DO和VO @Data @NoArgsConstructor @AllArgsConstructor @TableName(value = "tb_user") public class User { private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Long userId; private String userName; private Integer age; private Long deptId; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime gmtCreate; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime gmtModified; } @Data @NoArgsConstructor public class UserVo extends User { private String deptName; private String tel; } 3、MapStruct文件 @org.mapstruct.Mapper public interface UserMapStrcut { UserVo toUserVo(User user); List<UserVo> toUserVo(List<User> user); } 4                    、转换 public List<UserVo> selectUserList2() { List<User> userList = this.list(); UserMapStrcut mapper = Mappers.getMapper(UserMapStrcut.class); return mapper.toUserVo(userList); } (三)BeanCopier

BeanCopier在Spring体系下无额外依赖                   ,DO和VO数据类同MapStruct部分      。

转换 public List<UserVo> selectUserList3() { List<User> userList = this.list(); BeanCopier beanCopier = BeanCopier.create(User.class, UserVo.class, false); List<UserVo> rs = new ArrayList<>(); for (User user : userList) { UserVo userVo = new UserVo(); beanCopier.copy(user, userVo, null); rs.add(userVo); } return rs; }

三                    、小结

本文介绍的三种实体类转换工具是非常高效的             ,相比于以反射为基础的实现来说       ,性能相当出色                    。数据模型这块在程序运行过程中会创建大量对象                    ,因此既要考虑开发的灵活性             ,也要注重运行性能             。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
ngc tooled(ngctw32.exe – ngctw32是什么进程 有什么用) javascript高级程序设计最新(JavaScript进阶)