大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
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);
//把新创建的对象存入map
copierMap.put(key,beanCopier);
}
}
}
beanCopier = copierMap.get(key);
//获取到对象以后就进行copy
beanCopier.copy(source,target,null);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197162.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...