前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >java中beanutils_java bean

java中beanutils_java bean

作者头像
全栈程序员站长
发布于 2022-10-03 09:22:04
发布于 2022-10-03 09:22:04
78500
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

BeanUtils

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--        原型设计模式:复制属性-->
	Maven包
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.3</version>
        </dependency>

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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这三个属性才可以接收

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Map<String, String[]> parameterMap = req.getParameterMap();
User1 user = new User1();
BeanUtils.populate(user,parameterMap);
System.out.println(user);

BeanCopier

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
		//在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 工具类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月5日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验