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);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197162.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • stm32收发 wiegand 韦根协议开发详解

    stm32收发 wiegand 韦根协议开发详解在刚开始接触到韦根接口时,知道这是一种门禁相关的传输协议。其中有两种比较常用的韦根数据格式,韦根26和韦根34,其中韦根26是开放的,韦根34开不开放我不知道(看样子不开放),但是在网上还是能看到韦根34的代码协议,下面介绍一下韦根26以及韦根34的相关内容。Wiegand26格式:各数据位的含义:第1位: 为输出数据2—13位的偶校验位第2-9位:…

    2025年7月13日
    3
  • tar压缩文件

    tar压缩文件tar压缩的优点:兼容性好使用tar压缩文件tar-zcvftest.tar.gz./test/该命令表示压缩当前文件夹下的文件夹test,压缩后缀名为test.tar.gz如果不需要压缩成gz,只需要后缀为tar格式的,那么输入如下命令:tar-cvftest.tar./test/使用tar解压文件tar-xzvftest.tar.gz该命令表示把后缀为.tar.gz的文件解压到当前文件夹下。如果压缩文件的后缀是.tar,没有gz,则使用命令:tar-xvf

    2022年5月26日
    63
  • Idea激活码最新教程2023.1.6版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.1.6版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 1 6 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 1 6 成功激活

    2025年5月27日
    6
  • 语义分割看这一篇就够了!「建议收藏」

    语义分割看这一篇就够了!「建议收藏」语义分割技术综述本文就ImageSegmentationUsingDeepLearning:ASurvey第三章的模型进行了分析和介绍,第一第二章的基础指示可以看原文进行学习,相关知识有很多这里就不班门弄斧了。最好是一边读原文一边看本文效果更佳原文连接能力有限,水平一般,抱着学习的态度分享此文,有不准确的地方还请各位大佬斧正!3.1全连接网络关于FCN的资料有很多这里就不…

    2022年8月21日
    7
  • js-函数的prototype

    js-函数的prototypeDockerfile

    2022年7月22日
    16
  • Java程序生成linechart report的方法「建议收藏」

    Java程序生成linechart report的方法

    2022年2月5日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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