使用BeanUtils进行一些简单的操作

4 篇文章 0 订阅
3 篇文章 0 订阅

BeanUtils是个工具包,Apache公司所开发的开源工具包,良心企业重要是。代码中对javabean的操作很频繁, 所以Apache提供了一套开源的api,方便对javabean的操作!这个就是BeanUtils组件。
BeanUtils组件, 作用是简化javabean的操作!

用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件!

使用BeanUtils工具包我们需要引用的的Jar包有以下几种:

(1) BeanUtils相关包,主要是工具包

  • commons-beanutils-1.8.3.jar 我们要使用的包
  • commons-beanutils-1.8.3-javadoc.jar 文档包
  • commons-beanutils-bean-collections-1.8.3.jar 我也不知道什么包
  • commons-beanutils-core-1.8.3.jar 核心包

(2) Logic4j相关包,这是个日志包

  • commons-logging.jar
  • log4j.jar

下面就要开始使用这个工具包了


Admin类

 public class Admin {
    private int id;
    private String name;
    private String age;
    private Date birthday;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

}

下面是开始使用BeanUtil进行简化操作:

beanutils拷贝对象属性

public void test() throws Exception {
        //实现原理就是反射,对于基本数据类型会自动转换
        Admin admin=new Admin();      //实例化一个对象
        BeanUtils.copyProperty(admin, "name", "suny");    //拷贝name属性   三个参数是(对象,属性名,属性值)
        BeanUtils.copyProperty(admin,"age",18);        //拷贝age属性
        BeanUtils.setProperty(admin,"id",1);           //设置属性值
        System.out.println(admin.getName());
        System.out.println(admin.getAge());
        System.out.println(admin.getId());
    }

对象的拷贝

    public void test2() throws Exception
    {
        Admin admin=new Admin();    //创建对象1
        Admin admin2=new Admin();    //创建对象1
        BeanUtils.copyProperty(admin,"name","suny");      //拷贝name属性
        BeanUtils.copyProperties(admin2,admin);      //把admin对象拷贝到aamin2对象中     (现在的对象,源对象)
        System.out.println(admin2.getName());
    }

map对象拷贝到对象中

    public void test3() throws Exception
    {
        Admin admin=new Admin();       //实例化一对象
        Map<String,Object> map=new HashMap<String,Object>();     //创建一个map对象集合
        map.put("name", "Suny");    //推送map属性与值    ,map中的key一定要与javabean中的属性一样
        map.put("age", 19);        //推送map属性与值
        BeanUtils.populate(admin, map);       //把map对象拷贝到admin对象中
        System.out.println(admin.getName());
        System.out.println(admin.getAge());

    }

模拟表单提交时的操作

public void test4() throws Exception{
        String rec_name="suny";     //模拟从表单接受的name值
        String rec_age="20";        //模拟从表单接收得 age值
        Admin admin=new Admin();     //实例化对象
        BeanUtils.copyProperty(admin, "name", rec_name);      //请注意最后的name时候从表单接收的值
        BeanUtils.copyProperty(admin, "age", rec_age);         //这个age也是接收的值
        System.out.println(admin.getName());
        System.out.println(admin.getAge());

    }

忘记说使用方法了,使用BenUtils组件的话要先导入包:

  1. 引入commons-beanutils-1.8.3.jar核心包
  2. 引入日志支持包: commons-logging-1.1.3.jar

如果缺少日志jar文件,就会报错报错:

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)
    at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:117)
    at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)
    at 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BeanUtils.copyProperties()是Apache Commons BeanUtils库中的一个方法,用于将一个Java对象的属性值复制到另一个Java对象中对应的属性中。它可以简化代码,减少手动设置属性值的工作。 以下是一个简单的示例: 假设有一个源Java对象`Student`,其属性包括`id`、`name`和`age`: ```java public class Student { private Long id; private String name; private Integer age; // getters and setters } ``` 现在需要将`Student`对象的属性拷贝到另一个目标Java对象`StudentDTO`中,其属性包括`id`、`name`、`age`和`grade`: ```java public class StudentDTO { private Long id; private String name; private Integer age; private String grade; // getters and setters } ``` 可以使用`BeanUtils.copyProperties()`方法实现属性的拷贝: ```java Student source = new Student(); source.setId(1L); source.setName("Tom"); source.setAge(18); StudentDTO target = new StudentDTO(); BeanUtils.copyProperties(source, target); target.setGrade("A"); ``` 在上面的示例中,首先创建了一个源Java对象`Student`,并设置其属性值。然后创建了一个目标Java对象`StudentDTO`,并使用`BeanUtils.copyProperties()`方法将源对象的属性值复制到目标对象中。最后,为目标对象设置`grade`属性值。 通过以上操作,源Java对象`Student`的属性值被拷贝到了目标Java对象`StudentDTO`中对应的属性中。 需要注意的是,`BeanUtils.copyProperties()`方法拷贝属性时,会自动进行类型转换,但要求源Java对象和目标Java对象的属性名和类型必须一致。如果源Java对象和目标Java对象的属性名不一致,可以使用`@SerializedName`注解或其他方式进行处理。同时,该方法是浅拷贝,即如果源对象中包含引用类型的属性,那么目标对象中对应的属性也只是引用源对象中相同的引用,而不是拷贝其内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值