当前位置: 首页 > news >正文

在线教育网站开发软件百度一下网页版浏览器百度

在线教育网站开发软件,百度一下网页版浏览器百度,网站主页尺寸,新网站seo外包JavaBean间的转换 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 文章目录 JavaBean间的转换1 Apache Co…

JavaBean间的转换

⭐⭐⭐⭐⭐⭐
Github主页👉https://github.com/A-BigTree
笔记链接👉https://github.com/A-BigTree/Code_Learning
⭐⭐⭐⭐⭐⭐

如果可以,麻烦各位看官顺手点个star~😊

文章目录

  • JavaBean间的转换
    • 1 Apache Commons BeanUtils
    • 2 Spring的BeanUtils
    • 3 Json序列化转换
    • 4 MapStruct


前面文章中提到了VO、DTO、BO、PO等概念(【Java】—一篇搞懂POJO和VO、BO、DTO、PO模型),在实际工程中对于一次请求可能涉及到多个对象转换过程,如果对于每一次转换都手动去维护一个转换方法工作量是非常大的,而且在后续业务拓展时,如果我们有增加字段的需求,对于每一层的转换方法都要去维护变更,这是一件很麻烦的事情,所以下面推荐一些可以实现自动转换的方法,这里我们先定义一个用户的DTO对象和PO对象

  • UserDTO:
@Data
public class UserDTO implements Serializable {private long id;private String userName;private String shortName;private int age;
}
  • UserPO:
@Data
public class UserPO implements Serializable {private long id;private String userName;private int age;
}

1 Apache Commons BeanUtils

Apache Commons BeanUtils 提供了 PropertyUtils.copyProperties()BeanUtils.copyProperties()方法来实现对象之间属性的拷贝。

PropertyUtils.copyProperties() 使用方法为例:

// 方法封装
public static void copyProperties(Object dest, Object orig) {try {// 入参1为目标转换对象PropertyUtils.copyProperties(dest, orig);} catch (Exception e)throw e;
}

特点:

  • PropertyUtils支持为null的场景;

缺点:

  1. 它的性能问题相当差;
  2. PropertyUtils有自动类型转换功能,而java.util.Date恰恰是其不支持的类型;

2 Spring的BeanUtils

对于一个Spring项目来说,这是一种常用方法,封装示例如下:

// 方法封装
public static void copyProperties(Object orig, Object dest) {try {// 入参2为目标转换对象PropertyUtils.copyProperties(orig, dest);} catch (Exception e)throw e;
}

特点:

  • 速度相对快一些;
  • 第一个参数是源bean,第二个参数是目标bean,与上面的相反;

缺点:

  1. BeanUtils没有自动转换功能,遇到参数名相同,类型不同的参数不会进行赋值;
  2. BeanUtils对部分属性不支持null的情况,Ineger、Boolean、Long等不支持;

3 Json序列化转换

这种方法就是将java对象转换为json,然后将JSON转换成Java对象。这里以Spring默认的序列化框架jackson为例:

public class JsonConvertExample {private static final ObjectMapper MAPPER = new ObjectMapper();public static void main(String[] args) {UserPO userPO = new UserPO();userPO.setId(1L);userPO.setUserName("ABigTree");userPO.setAge(22);String json = MAPPER.writeValueAsString(userPO);UserDTO userDTO = MAPPER.readValue(json, UserDTO.class);}
}

特点:

  • 属性名需保持一致,或通过配置Json序列化的相关设置来满足相关需求
  • 多了序列化与反序列化过程,性能大打折扣;

缺点:

  • 多此一举,全是缺点😂

4 MapStruct

现在要介绍一个性能爆炸、高级优雅、大厂标准的转换方法,MapStruct框架,要使用MapStruct需要先在pom.xml中添加依赖:

<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId>
</dependency>

如果要使用 MapStruct 库进行对象之间的映射,首先需要定义一个 Mapper 接口,并在接口中编写映射方法。然后,MapStruct 库会自动生成对应的映射实现类,接口定义如下:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;@Mapper
public interface UserMapper {UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);@Mapping(source = "shortname", target = "userName")UserPO toUserPO(UserDTO dto);
}

除了同名字段自动转换的功能,MapStruct还支持@Mapping等注解去配置转换过程中细节实现。

对于MapStruct为什么性能爆炸和MapStruct的进阶用法,这里先挖个坑,后面去开坑详细介绍~

http://www.khdw.cn/news/40626.html

相关文章:

  • 凡科建站网址新媒体运营培训
  • 公司网站功能性建设有哪些优化视频
  • 农特产品网站建设合同模板重庆百度小额贷款有限公司
  • 用其他商标在自己网站做宣传常德seo快速排名
  • 旅游网站的市场需求怎么做介绍电子商务网站建设的步骤
  • 书城网站开发的参考文献上海专业优化排名工具
  • 零基础可以做网站吗应用商店优化
  • 哪些网站可以做视频收费最近新闻摘抄
  • 医院网站做品牌推广需要哪些百度网盘客服在线咨询
  • 三合一网站开发成品短视频app源码的优点
  • 鄂州市政府网站建设分析西安seo工作室
  • 做党建需要关注网站sem广告投放是做什么的
  • 廊坊网站建网络服务提供者不是网络运营者
  • 政府大型网站建设网络推广教程
  • 做推广可以在哪些网站发布软文怎么样引流加微信
  • 毕业设计网站开发题目网站seo设计
  • 网站开发行业黄页
  • 多开商城西安的网络优化公司
  • o2o网站建设多少钱中国最厉害的营销策划公司
  • 企业年金办法搜索引擎优化的主要工作
  • 做体力活的网站公司怎么做网络营销
  • 网站静态页面做网站上海网站关键词排名
  • 苏州网站建设系统哪家好seo培训赚钱
  • 贵州网站建设seo优化南京网络推广公司排名
  • 如何开设一个网站seo优化及推广如何运营
  • 一般网站的流量是多少谈谈对seo的理解
  • wordpress退出维护模式seo查询是什么
  • 办公室装修一般多少钱一个平方站群优化公司
  • 做网站和做微信小程序semantic
  • 上海企业建站工具网络营销岗位职责和任职要求