java中beanutils_java bean

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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账号...

(0)


相关推荐

  • 【转载】100亿数据1万属性数据架构设计

    【转载】100亿数据1万属性数据架构设计

    2021年11月20日
  • 网站ssl证书申请_证书注册需要什么材料

    网站ssl证书申请_证书注册需要什么材料HTTPS是指网站在地址栏显示的加密协议,这个协议称作为HTTPS,但实现HTTPS必须要用HTTPS证书才可以,这就告诉大家任何申请HTTPS证书。申请HTTPS方法1、HTTPS证书申请之前我们需要准备:域名、邮箱(用于接收证书)。2、然后将域名确定后提交至Gworg进行申请。3、根据要求完成域名认证,可选认证方式DNS解析、文件认证、邮箱。4、大约十几分钟就可以获得SSL证书文件。5、配置到指定的服务器或者CDN等产品。6、HTTPS证书只需几分钟就可以完成。如果对申请

  • 无线电A类考试题_业余无线电考试a类题库app

    无线电A类考试题_业余无线电考试a类题库app[I]LK0001[Q]我国现行法律体系中专门针对无线电管理的最高法律文件及其立法机关是:[A]中华人民共和国无线电管理条例,国务院和中央军委[B]中华人民共和国无线电管理办法,工业和信息化部[C]中华人民共和国电信条例,国务院[D]中华人民共和国业余无线电台管理办法,工业和信息化部[P][I]LK0002[Q]我国现行法律体系中专门针对业余无线电台管理的最高法律文件及其立法机关是:[A]业余无线电台管理办法,工业和信息化部[B]个人业余无线电台管理暂行办法,国家体委和国家无委[C]业

  • 易语言注入 c dll,易语言DLL注入模块简单型

    易语言注入 c dll,易语言DLL注入模块简单型易语言DLL注入模块简单型系统结构:注入DLL,卸载DLL,提取错误标题,提取错误信息,提取错误代码,UnHookDLL,OpenProcess,VirtualAllocEx,CloseHandle,WriteProcessMemory,VirtualFreeEx,GetModuleHandle,GetProcAddress,CreateRemoteThread,WaitForSingleObje…

  • zookeeper入门(1)「建议收藏」

    zookeeper入门(1)「建议收藏」zookeeper应用场景zookeeper特点zookeeper数据模型Ubuntu配置zookeeper是一个典型的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能,高可用,且具有严格顺序访问控制能力的分布式协调存储服务应用场景维护配置信息分布式锁服务集群管理生成分布式唯一ID维护配置信息如java编程经常遇到配置项,比如数据路连接的url,password等等。通常这些配置文件需要放在服务器上,但需要更改配置文件的时候需要去服务器上更改。但是随着分布式系统的兴起,由于

  • Idea激活码永久有效Idea2018.2.7激活码教程-持续更新,一步到位「建议收藏」

    Idea激活码永久有效Idea2018.2.7激活码教程-持续更新,一步到位「建议收藏」Idea激活码永久有效2018.2.7激活码教程-Windows版永久激活-持续更新,Idea激活码2018.2.7成功激活

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号