大家好,又见面了,我是你们的朋友全栈君。
<!-- 原型设计模式:复制属性-->
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);
<!-- 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);
//把新创建的对象存入map
copierMap.put(key,beanCopier);
}
}
}
beanCopier = copierMap.get(key);
//获取到对象以后就进行copy
beanCopier.copy(source,target,null);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197162.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有