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