commons-beanutils的使用

commons-beanutils是通过内省来完成的。

需要两个包:

  • commons-beanutils-1.8.3.jar
  • commons-logging-1.1.1.jar

JavaBean类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package cn.zy.study;
/**
 * 提供get和set方法
 * 并有一个无参的构造方法
 * @author zy
 *
 */
public class Person {
     
    private String name;
    private int age;
    private String gender;
    public Person() {
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", gender=" + gender
                + "]";
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
     
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
     
}

  

对bean类的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package cn.test;
 
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
 
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;
 
import cn.zy.study.Person;
 
public class Demo3 {
 
    @Test
    public void fun1() throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{
        //用Class类的forName方法来获取对应的class对象
        String className = "cn.zy.study.Person";
        Class clazz = Class.forName(className);
        //使用clazz对应类的默认构造器创造实例
        Object bean = clazz.newInstance();
        /**使用beanutils工具设置bean类的属性值,
         * 所有的属相值都可以设置成String类型,将会自动转换
         * 没有设置属性的值将为null
         */
        BeanUtils.setProperty(bean, "name", "Scott");
        BeanUtils.setProperty(bean, "age", "17");
        System.out.println(bean);
        //得到bean类的属性值,注意属值都将变成String类型
        String name = BeanUtils.getProperty(bean, "name");
        String age = BeanUtils.getProperty(bean, "age");
         
    }
     
    @Test
    /**
     * 将map直接封装到一个bean中
     */
    public void fun2() throws InstantiationException, IllegalAccessException, InvocationTargetException{
        Map<String,String> map = new HashMap();
        map.put("name","Scott");
        map.put("age","15");
        //利用类的class属性来获取Class对象,并创建
        Person bean = Person.class.newInstance();
        //将map数据填充到Javabean中
        BeanUtils.populate(bean, map);
        System.out.println(bean);
    }
 
}

  

 

posted @   头痛不头痛  阅读(586)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩