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

  本篇文章为你整理了EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频()的详细内容,包含有 EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频,希望能帮助你了解 EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频。

  在实际项目开发过程中,总有数据实体类互相转换的需求,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

  

 

  

@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;

  

 

  

@Data

 

  @NoArgsConstructor

  public class UserVo extends User {

   private String deptName;

   private String tel;

   * 原生构造器来实现 DO 转 VO

   * @param user

   public UserVo(User user) {

   super(user);

  

 

  

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);

  

 

  

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;

  

 

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

  以上就是EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频()的详细内容,想要了解更多 EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: