commons-beanutils一些应用

BeanDto.java类:
import java.io.Serializable;

public class BeanDto implements Serializable {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


MyBean.java类:
import java.io.Serializable;

public class MyBean implements Serializable {

	private Person person;

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
}


Person.java类:
import java.io.Serializable;

public class Person implements Serializable {

	private Address address;

	public Address getAddress() {
		return address;
	}

	public void setAddress(Address address) {
		this.address = address;
	}
}


Address.java类:
import java.io.Serializable;

public class Address implements Serializable {

	private String city;

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}
}


TestBeanutils.java类:
import java.lang.reflect.InvocationTargetException;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BasicDynaClass;
import org.apache.commons.beanutils.BeanPropertyValueChangeClosure;
import org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate;
import org.apache.commons.beanutils.BeanToPropertyValueTransformer;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.LazyDynaBean;
import org.apache.commons.beanutils.LazyDynaList;
import org.apache.commons.beanutils.LazyDynaMap;
import org.apache.commons.beanutils.WrapDynaBean;
import org.apache.commons.collections.CollectionUtils;

import com.commonsbeanutils.dto.Address;
import com.commonsbeanutils.dto.BeanDto;
import com.commonsbeanutils.dto.MyBean;
import com.commonsbeanutils.dto.Person;

public class TestBeanutils {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//将一个bean包装成一个dynabean, 便于使用
		BeanDto dto = new BeanDto();
		dto.setName("shihuan");
		DynaBean wrapper = new WrapDynaBean(dto);
		String firstName = (String) wrapper.get("name");
		System.out.println(firstName);
		
		Map map = new HashMap();
		map.put("name", "大家好!");
		//将Map中的数据,填入到bean中..强大吧..
		try {
			BeanUtils.populate(dto, map);
			System.out.println(dto.getName());
		} catch (IllegalAccessException e1) {
			e1.printStackTrace();
		} catch (InvocationTargetException e1) {
			e1.printStackTrace();
		} 
		
		ConvertUtils.convert("2010-4-30", Date.class);  //转化为时间类
		ConvertUtils.convert("20.02", Double.class);  //转化为double
		System.out.println(ConvertUtils.convert("2011-8-28", Date.class));
		System.out.println(ConvertUtils.convert("28.09", Double.class));
		
		//将整个集合的bean的name属性设置为批量修改集合中的bean的name属性
		List dtoCollection = new ArrayList();
		dtoCollection.add(dto);
		BeanPropertyValueChangeClosure closure = new BeanPropertyValueChangeClosure("name", "批量修改集合中的bean的name属性");
	    CollectionUtils.forAllDo(dtoCollection, closure);
	    System.out.println(dto.getName());

	    //过滤整个集合,查找name的值是prepare的所有beans
	    List dtoCollectionFilter = new ArrayList();
	    dto.setName("prepare");
	    dtoCollectionFilter.add(dto);
	    BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate("name", "prepare");
	    CollectionUtils.filter(dtoCollectionFilter, predicate);
	    System.out.println(dtoCollectionFilter.size());
	    
	    //获取每个bean的person属性中的地址属性中的城市信息,输出到集合中
	    MyBean mybean1 = new MyBean();
	    Person person1 = new Person();
	    mybean1.setPerson(person1);
	    Address address1 = new Address();
	    person1.setAddress(address1);
	    mybean1.getPerson().getAddress().setCity("锦州");
	    MyBean mybean2 = new MyBean();
	    Person person2 = new Person();
	    mybean2.setPerson(person2);
	    Address address2 = new Address();
	    person2.setAddress(address2);
	    mybean2.getPerson().getAddress().setCity("沈阳");
	    List myCollection = new ArrayList();
	    myCollection.add(mybean1);
	    myCollection.add(mybean2);
	    BeanToPropertyValueTransformer transformer = new BeanToPropertyValueTransformer("person.address.city");
	    Collection resultCity = CollectionUtils.collect(myCollection, transformer);
	    for (Iterator iterCity = resultCity.iterator(); iterCity.hasNext();) {
			String citys = (String) iterCity.next();
			System.out.println(citys);
		}
	    
		
		//dynabean是一种动态的Bean,他的使用非常像Map的操作
		DynaBean car = new LazyDynaBean();
        car.set("carNo", 1);
        car.set("owner", "张三");         
        System.out.println(car.get("carNo") + " -- " + car.get("owner"));
        
        DynaBean carMap = new LazyDynaMap();
        carMap.set("carNo", 2);
        carMap.set("owner", "历史");         
        System.out.println(carMap.get("carNo") + " -- " + carMap.get("owner"));
        
        List carList = new LazyDynaList();
        carList.add(3);
        carList.add("王五");     
        System.out.println(carList.get(0).toString() + " -- " + carList.get(1).toString());
        
        BasicDynaClass bdClass = new BasicDynaClass();
        try {
			DynaBean dynaBean = bdClass.newInstance();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		}
		
		
	}

}

猜你喜欢

转载自shihuan830619.iteye.com/blog/1159834