BeanUtils和BeanCopier
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相关推荐
- 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
2019独角兽企业重金招聘Python工程师标准>>> 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀 博客分类: java 对象拷贝的应用 ...
- BeanUtils、BeanCopier、Dozer、Orika 哪个性能最强?
作者 | Alben 来源 | https://albenw.github.io/posts/f6a7daea/ 背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重 ...
- BeanUtils与BeanCopier的区别
对于字段名称与类型完全一样时,两者无区别 对于字段名称相同,但是类型不一样(如int <=> Integer)时,BeanUtils拷贝,而BeanCopier不拷贝(需要通过转换才能完成 ...
- BeanCopier、BeanUtils 对象属性拷贝
开发为了隔离变化,常将 DAO 查询出来的DO和对前端提供的 DTO 隔离开来,它们的结构都是类似的.写很多冗长的b.setFiled(a.getFiled())这样的代码,是繁琐无意义的.于是需要简 ...
- 对象拷贝之Apache BeanUtils、Spring的BeanUtils、Mapstruct、BeanCopier、PropertieyUtils对比(深拷贝)
大多时候时候使用的是Apache或Spring``BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier. https://github.com/cglib/cglib ...
- Bean的拷贝之BeanUtils
本文来说下Bean的各类拷贝工具 文章目录 概述 对象拷贝 BeanUtils apache的BeanUtils spring的BeanUtils cglib BeanCopier Hutool Be ...
- beanutils copyproperties_你还在用BeanUtils进行对象属性拷贝?
作者:Van_Fan 在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的:但是我们很不喜欢写很多冗长的b.setF1(a.g ...
- BeanCopier性能对比
概述 常见或常用的几种Bean属性复制工具 Apache.BeanUtils Apache.PropertyUtil Spring.BeanUtils Cglib.BeanCopier MapStru ...
- java signature 性能_Java常见bean mapper的性能及原理分析
背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重复且繁琐,于是乎催生出很多工具来优雅,高效地完成这个操作,有BeanUtils.BeanCopier.Dozer. ...
最新文章
- 简单介绍SQLserver中的declare变量用法
- ElectronOCR:基于Electron+React+Tesseract的MACOS下的OCR工具
- java自学语法_Java自学笔记(一):基础知识
- 一些数学小公式/定理的证明
- Linux给Java程序设置端口_扫描服务端口的Java程序
- ubuntu-server-18.04 设置开机启动脚本
- 云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
- 《Tensorflow 实战》(完整版,附源码)
- 【Flutter】Dart中的类和对象
- hadoop无法停止
- sql-插入当前时间
- PCB_问题记录_QT(1)引用gdiplus.h、Gdiplus.lib 报错
- git输入 ssh-keygen -t rsa 后只显示Generating public/private rsa key pair. 然后就直接跳出了
- 8. 求 s=a+aa+aaa+aaaa+aa…a 的值
- 以太坊的区块和存储(二):区块体之叔区块
- 【盘点】最受欢迎十大中国风歌曲
- 在c语言中下列类型属于构造地震,C语言课后习题解析及答案
- 用计算机弹苹果手机铃声,10秒搞定,苹果iPhone手机不用电脑换铃声,这个方法真的炒鸡简单!...
- python123英文字符的鲁棒_Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现
- C语言阶梯程序,阶梯式C语言程序设计实验指导书.pdf