propertyMap = BeanUtils.describe(cust) ;propertyMap = PropertyUtils.describe(cus

package beantest;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.commons.beanutils.BasicDynaBean;
import org.apache.commons.beanutils.BasicDynaClass;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;

public class BeanUtilsUsage {

	public static void main(String[] args) throws Exception {

		// demoNormalJavaBeans();

		// demoDynaBeans();

		Address addr1 = new Address("CA1234", "xxx", "Los Angeles", "USA");

		Address addr2 = new Address("100000", "xxx", "Beijing", "China");

		Address[] addrs = new Address[2];

		addrs[0] = addr1;

		addrs[1] = addr2;

		Customer cust = new Customer(123, "John Smith", addrs);

		Map propertyMap = new HashMap();

		// ok所有的都会转换成为String
		propertyMap = BeanUtils.describe(cust);
		logMap(propertyMap);

		// 错误,会按照原来的类型进行转换 Long不能转为String (Customer id is long type)
		/*
		 * propertyMap = PropertyUtils.describe(cust);
		 * 
		 * 
		 * 
		 * logMap2(propertyMap);
		 * 
		 *  // 错误,会按照原来的类型进行转换 Long不能转为String (Customer id is long type) //Map<String,String>改成<String
		 * ,Object>比较好 /*propertyMap = PropertyUtils.describe(cust);
		 * 
		 * logMap(propertyMap);
		 */

		propertyMap = PropertyUtils.describe(cust);

		logMap2(propertyMap);
	}

	static void logMap(Map<String, String> map) {

		/*
		 * always <Map.Entry> as Object stored in entrySet
		 */
		Set<Map.Entry<String, String>> entrySet = map.entrySet();

		/*
		 * Iterator keeps the object in this collection
		 */
		Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();

		while (iterator.hasNext()) {
			Map.Entry<String, String> entry = iterator.next();
			System.out.print(entry.getKey() + ": ");
			System.out.println(entry.getValue());
		}

	}

	static void logMap2(Map<String, Object> map) {

		/*
		 * always <Map.Entry> as Object stored in entrySet
		 */
		Set<Map.Entry<String, Object>> entrySet = map.entrySet();

		/*
		 * Iterator keeps the object in this collection
		 */
		Iterator<Map.Entry<String, Object>> iterator = entrySet.iterator();

		while (iterator.hasNext()) {
			Map.Entry<String, Object> entry = iterator.next();
			System.out.print(entry.getKey() + ": ");
			System.out.println(entry.getValue());
		}

	}

	public static void demoNormalJavaBeans() throws Exception {

		System.out
				.println(StringUtils.center(" demoNormalJavaBeans ", 40, "="));

		// data setup

		Address addr1 = new Address("CA1234", "xxx", "Los Angeles", "USA");

		Address addr2 = new Address("100000", "xxx", "Beijing", "China");

		Address[] addrs = new Address[2];

		addrs[0] = addr1;

		addrs[1] = addr2;

		Customer cust = new Customer(123, "John Smith", addrs);

		// accessing the city of first address

		String cityPattern = "addresses[0].city";

		String name = (String) PropertyUtils.getSimpleProperty(cust, "name");

		String city = (String) PropertyUtils.getProperty(cust, cityPattern);

		Object[] rawOutput1 = new Object[] { "The city of customer ", name,

		"'s first address is ", city, "." };

		System.out.println(StringUtils.join(rawOutput1));

		// setting the zipcode of customer's second address

		String zipPattern = "addresses[1].zipCode";

		if (PropertyUtils.isWriteable(cust, zipPattern)) {

			System.out.println("Setting zipcode ...");

			PropertyUtils.setProperty(cust, zipPattern, "200000");

		}

		String zip = (String) PropertyUtils.getProperty(cust, zipPattern);

		Object[] rawOutput2 = new Object[] { "The zipcode of customer ", name,

		"'s second address is now ", zip, "." };

		System.out.println(StringUtils.join(rawOutput2));

		System.out.println();

	}

	public static void demoDynaBeans() throws Exception {

		System.out.println(StringUtils.center(" demoDynaBeans ", 40, "="));

		// creating a DynaBean

		DynaProperty[] dynaBeanProperties = new DynaProperty[] {

		new DynaProperty("name", String.class),

		new DynaProperty("inPrice", Double.class),

		new DynaProperty("outPrice", Double.class),

		};

		BasicDynaClass cargoClass = new BasicDynaClass("Cargo",
				BasicDynaBean.class, dynaBeanProperties);

		DynaBean cargo = cargoClass.newInstance();

		// accessing a DynaBean

		cargo.set("name", "Instant Noodles");

		cargo.set("inPrice", new Double(21.3));

		cargo.set("outPrice", new Double(23.8));

		System.out.println("name: " + cargo.get("name"));

		System.out.println("inPrice: " + cargo.get("inPrice"));

		System.out.println("outPrice: " + cargo.get("outPrice"));

		System.out.println();

	}

}

 

 

 

===================================================================

package beantest;

public class Customer {

	private long id;

	private String name;

	private Address[] addresses;

	public Customer() {

	}

	public Customer(long id, String name, Address[] addresses) {

		this.id = id;

		this.name = name;

		this.addresses = addresses;

	}

	public Address[] getAddresses() {  

		return addresses;

	}

	public void setAddresses(Address[] addresses) {

		this.addresses = addresses;

	}

	public long getId() {

		return id;

	}

	public void setId(long id) {

		this.id = id;

	}

	public String getName() {
		return name;
	}

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

}

 

==================================================================

 

package beantest;

/*
 * Java bean注意标准
 */
public class Address {

	private String zipCode;

	private String addr;

	private String city;

	private String country;

	public Address() {

	}

	public Address(String zipCode, String addr, String city, String country) {

		this.zipCode = zipCode;

		this.addr = addr;

		this.city = city;

		this.country = country;

	}

	public String getAddr() {

		return addr;

	}

	public void setAddr(String addr) {

		this.addr = addr;

	}

	public String getCity() {

		return city;

	}

	public void setCity(String city) {

		this.city = city;

	}

	public String getCountry() {

		return country;

	}

	public void setCountry(String country) {

		this.country = country;

	}

	public String getZipCode() {

		return zipCode;

	}

	public void setZipCode(String zipCode) {

		this.zipCode = zipCode;

	}
}

 

 

 

你可能感兴趣的:(apache,bean)