PropertyUtils的使用

1、定义一个二个bean类

(1)  第一个

 

Java代码
package com.sunrex.demo02;

import java.util.List;

public class Address {
    private String email;
    private List<String> telephone;
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public List<String> getTelephone() {
        return telephone;
    }
    public void setTelephone(List<String> telephone) {
        this.telephone = telephone;
    }
}

 

(2)第二个

Java代码
package com.sunrex.demo02;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Person {
    private String username;
    private int age;
    private float stature;//身高
    private boolean sex;//性别
    @SuppressWarnings("unchecked")
    private List list = new ArrayList();
    private String[] friendsNames;
    private Map<String, String> maps = new HashMap<String, String>();
    private Address address;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public float getStature() {
        return stature;
    }
    public void setStature(float stature) {
        this.stature = stature;
    }
    public boolean isSex() {
        return sex;
    }
    public void setSex(boolean sex) {
        this.sex = sex;
    }
    @SuppressWarnings("unchecked")
    public List getList() {
        return list;
    }
    @SuppressWarnings("unchecked")
    public void setList(List list) {
        this.list = list;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    public Map<String, String> getMaps() {
        return maps;
    }
    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }
    public String[] getFriendsNames() {
        return friendsNames;
    }
    public void setFriendsNames(String[] friendsNames) {
        this.friendsNames = friendsNames;
    }
}

 

 

3、测试类

Java代码
package com.sunrex.demo02;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.PropertyUtils;

public class PersonTest {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        Person person = new Person();
        try {
            //simple property
            PropertyUtils.setSimpleProperty(person, "username", "李四");
            PropertyUtils.setSimpleProperty(person, "age", 22);
            PropertyUtils.setSimpleProperty(person, "stature", 173.5f);
            PropertyUtils.setSimpleProperty(person, "sex", new Boolean(false));
            
            //index property
            //List
            List list = new ArrayList();
            list.add("list value 0");
            list.add("list value 1");
            String listValue2 = "new list value 1";
            PropertyUtils.setSimpleProperty(person, "list", list);
            //将list设置到person之后,可以对里面的值进行修改
            PropertyUtils.setIndexedProperty(person, "list[1]", listValue2);

            //数组
            String[] str = {"张三", "王五", "赵钱"};
            person.setFriendsNames(str);
            PropertyUtils.setIndexedProperty(person, "friendsNames[2]", "new赵钱");
            
            //Map
            Map<String, String> map = new HashMap<String, String>();
            map.put("key1", "vlaue1");
            map.put("key2", "vlaue2");
            map.put("key3", "vlaue3");
            person.setMaps(map);
            PropertyUtils.setMappedProperty(person, "maps", "key1", "new value1");
            PropertyUtils.setMappedProperty(person, "maps(key2)", "maps(key2) value");
            
            //nest property
            Address address = new Address();
            address.setEmail("jhlishero@163.com");
            List<String> telephoneList = new ArrayList<String>();
            telephoneList.add("12345678911");
            telephoneList.add("92345678911");
            address.setTelephone(telephoneList);
            person.setAddress(address);
            PropertyUtils.setNestedProperty(person, "address.telephone[1]", "nest 11111111");
            PropertyUtils.setNestedProperty(person, "address.email", "new_jhlishero@163.com");
            
            System.out.println(PropertyUtils.getSimpleProperty(person, "username"));
            System.out.println(PropertyUtils.getSimpleProperty(person, "age"));
            System.out.println(PropertyUtils.getSimpleProperty(person, "stature"));
            System.out.println(PropertyUtils.getSimpleProperty(person, "sex"));
            System.out.println(PropertyUtils.getSimpleProperty(person, "list"));
            //list
            System.err.println(PropertyUtils.getIndexedProperty(person, "list[0]"));
            System.err.println(PropertyUtils.getIndexedProperty(person, "list", 1));
            //数组
            System.out.println(PropertyUtils.getIndexedProperty(person, "friendsNames[0]"));
            System.out.println(PropertyUtils.getIndexedProperty(person, "friendsNames", 1));
            System.out.println(PropertyUtils.getIndexedProperty(person, "friendsNames[2]"));
            
            //Map
            System.err.println(PropertyUtils.getMappedProperty(person, "maps(key1)"));
            System.err.println(PropertyUtils.getMappedProperty(person, "maps", "key2"));
            System.err.println(PropertyUtils.getMappedProperty(person, "maps(key3)"));
            
            //nest--嵌套输出 
            System.out.println(PropertyUtils.getNestedProperty(person, "address.email"));
            System.out.println(PropertyUtils.getNestedProperty(person, "address.telephone[0]"));
            System.out.println(PropertyUtils.getNestedProperty(person, "address.telephone[1]"));
            
            //也可以使用如下方法获取值
            System.out.println(PropertyUtils.getProperty(person, "address.telephone[1]"));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

 4、输出结果

李四
22
173.5
false
[list value 0, new list value 1]
list value 0
new list value 1
张三
王五
new赵钱
new value1
new_jhlishero@163.com
12345678911
nest 11111111
nest 11111111
maps(key2) value
vlaue3

posted @ 2013-04-10 18:28  if_only  阅读(1356)  评论(0编辑  收藏  举报
回到顶部