BeanUtils

<!--        原型设计模式:复制属性-->Maven包<dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.3</version></dependency>

copyProperties方法 A和重B合的属性 可以进行copy

User user = new User(1,"a","b",1.1,10);
User1 user1 = new User1();
BeanUtils.copyProperties(user1,user);
System.out.println(user1);

使用getParameterMap方法 接收接送前台传输的字段和值 parametermap方法可以把所以的字段值放入对象里面,

但对象的属性必须要有前台传输过来的字段值

比如:页面传入后台的数据有 username,pwd,id

用于接收的user对象里面的属性必须要有username,pwd,id这三个属性才可以接收

Map<String, String[]> parameterMap = req.getParameterMap();
User1 user = new User1();
BeanUtils.populate(user,parameterMap);
System.out.println(user);

BeanCopier

<!-- https://mvnrepository.com/artifact/cglib/cglib --><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version></dependency>

例子:https://blog.csdn.net/lan12334321234/article/details/70048786

     //在beancopier存入                         被copy的类型    和   copy的类型BeanCopier beanCopier = BeanCopier.create(User.class, UserDemo.class, false);User user = new User();user.setId(1);user.setName("zhangsan");user.setAge(22);UserDemo userDemo = new UserDemo();//第一个参数代表 被copy的对象 第二个参数代表copy的对象  beanCopier.copy(user,userDemo,null);System.out.println(userDemo);

第三个参数useConverter,是否开启Convert。 默认BeanCopier只会做同名,同类型属性的copier,否则就会报错。如果类型需要转换比如Date转换成String则自定义Convert类实现Convert接口。

BeancopierUtil 工具类

import net.sf.cglib.beans.BeanCopier;import java.util.HashMap;
import java.util.Map;public class BeancopierUtils {//构造方法私有化private BeancopierUtils() {}//为了提高效率   每一个copy出来的对象我们都存在map集合里面 下次需要相同的就直接拿  不需要再次创建//缓存private static Map<String, BeanCopier> copierMap = new HashMap<>();/*** 把source的属性拷贝到 target* @param source* @param target*/public static void copy(Object source,Object target){//为每一个不同的copy对象创建一个编号//方便判断map集合里是否相同的对象String key = source.getClass().toString() + target.getClass().toString();//判断集合中是否存在相同对象BeanCopier beanCopier = null;if(!copierMap.containsKey(key)){synchronized (BeancopierUtils.class){if(!copierMap.containsKey(key)){//当不存在的时候就创建新的beanCopier = BeanCopier.create(source.getClass(), target.getClass(), false);//把新创建的对象存入mapcopierMap.put(key,beanCopier);}}}beanCopier = copierMap.get(key);//获取到对象以后就进行copybeanCopier.copy(source,target,null);}
}

BeanUtils和BeanCopier相关推荐

  1. 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀

    2019独角兽企业重金招聘Python工程师标准>>> 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀 博客分类: java 对象拷贝的应用 ...

  2. BeanUtils、BeanCopier、Dozer、Orika 哪个性能最强?

    作者 | Alben 来源 | https://albenw.github.io/posts/f6a7daea/ 背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重 ...

  3. BeanUtils与BeanCopier的区别

    对于字段名称与类型完全一样时,两者无区别 对于字段名称相同,但是类型不一样(如int <=> Integer)时,BeanUtils拷贝,而BeanCopier不拷贝(需要通过转换才能完成 ...

  4. BeanCopier、BeanUtils 对象属性拷贝

    开发为了隔离变化,常将 DAO 查询出来的DO和对前端提供的 DTO 隔离开来,它们的结构都是类似的.写很多冗长的b.setFiled(a.getFiled())这样的代码,是繁琐无意义的.于是需要简 ...

  5. 对象拷贝之Apache BeanUtils、Spring的BeanUtils、Mapstruct、BeanCopier、PropertieyUtils对比(深拷贝)

    大多时候时候使用的是Apache或Spring``BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier. https://github.com/cglib/cglib ...

  6. Bean的拷贝之BeanUtils

    本文来说下Bean的各类拷贝工具 文章目录 概述 对象拷贝 BeanUtils apache的BeanUtils spring的BeanUtils cglib BeanCopier Hutool Be ...

  7. beanutils copyproperties_你还在用BeanUtils进行对象属性拷贝?

    作者:Van_Fan 在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的:但是我们很不喜欢写很多冗长的b.setF1(a.g ...

  8. BeanCopier性能对比

    概述 常见或常用的几种Bean属性复制工具 Apache.BeanUtils Apache.PropertyUtil Spring.BeanUtils Cglib.BeanCopier MapStru ...

  9. java signature 性能_Java常见bean mapper的性能及原理分析

    背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重复且繁琐,于是乎催生出很多工具来优雅,高效地完成这个操作,有BeanUtils.BeanCopier.Dozer. ...

最新文章

  1. 简单介绍SQLserver中的declare变量用法
  2. ElectronOCR:基于Electron+React+Tesseract的MACOS下的OCR工具
  3. java自学语法_Java自学笔记(一):基础知识
  4. 一些数学小公式/定理的证明
  5. Linux给Java程序设置端口_扫描服务端口的Java程序
  6. ubuntu-server-18.04 设置开机启动脚本
  7. 云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
  8. 《Tensorflow 实战》(完整版,附源码)
  9. 【Flutter】Dart中的类和对象
  10. hadoop无法停止
  11. sql-插入当前时间
  12. PCB_问题记录_QT(1)引用gdiplus.h、Gdiplus.lib 报错
  13. git输入 ssh-keygen -t rsa 后只显示Generating public/private rsa key pair. 然后就直接跳出了
  14. 8. 求 s=a+aa+aaa+aaaa+aa…a 的值
  15. 以太坊的区块和存储(二):区块体之叔区块
  16. 【盘点】最受欢迎十大中国风歌曲
  17. 在c语言中下列类型属于构造地震,C语言课后习题解析及答案
  18. 用计算机弹苹果手机铃声,10秒搞定,苹果iPhone手机不用电脑换铃声,这个方法真的炒鸡简单!...
  19. python123英文字符的鲁棒_Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现
  20. C语言阶梯程序,阶梯式C语言程序设计实验指导书.pdf

热门文章

  1. Vue 插槽(slot)详细介绍(对比版本变化,避免踩坑)
  2. 从零实现机器学习算法(八) Stacking
  3. CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口
  4. Electron使用preload预加载及安全策略
  5. 【转】IOS与安卓的区别
  6. 想开水果店从哪里进货渠道,水果店的进货渠道
  7. Promise系列学习
  8. 游戏测评1-《终焉誓约》
  9. 安卓图表hellochart - 折线图LineChartView (一)
  10. Modelsim独立仿真DDR4