Commons BeanUtils 的官方網(wǎng)址:http://commons.apache.org/beanutils/
Commins BeanUtils是針對JavaBeans一般性操作的組件,可以用來對JavaBeans進行復(fù)制,屬性的讀取,設(shè)置,修改,還以動態(tài)構(gòu)造JavaBeans對象。
使用這個組件需要三個Jar文件
其中兩個是 commons-logging-1.1.1下的commons-logging-1.1.1.jar 和commons-logging-api-1.1.1.jar
剩下一個是 commons-beanutils-1.8.0-BETA 下的commons-beanutils-1.8.0-BETA.jar
把這三個加入到項目的構(gòu)件路徑下即可。
下面為一個簡單的例子
新建User Profile Address BeanUtilsExample 四個類
1 User.java
package com.v503.zhouzhou;
public class User {
private Long userId;
private String username;
private String password;
private Profile profile;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
}
2 Profile.java
package com.v503.zhouzhou;
import java.util.Date;
import java.util.Map;
public class Profile {
private Map<String, String> phone;
private Address[] address;
private Date birthDate;
private String email;
public Map<String, String> getPhone() {
return phone;
}
public void setPhone(Map<String, String> phone) {
this.phone = phone;
}
public Address[] getAddress() {
return address;
}
public void setAddress(Address[] address) {
this.address = address;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
3 Address.java
package com.v503.zhouzhou;
public class Address {
private String postCode;
private String country;
private String city;
private String addr;
public Address() {
}
public Address(String postCode, String country, String city, String addr) {
this.postCode = postCode;
this.country = country;
this.city = city;
this.addr = addr;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
4 BeanUtilsExample.java
package com.v503.zhouzhou;
import java.lang.reflect.InvocationTargetException;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
public class BeanUtilsExamples {
@SuppressWarnings("unused")
private User prepareData() {
Address[] address = { new Address("111111", "中國", "保定", "河北大學(xué)"),
new Address("22222", "中國", "保定", "河北大學(xué)工商學(xué)院") };
Profile profile = new Profile();
profile.setBirthDate(new GregorianCalendar(1987, 04, 17).getTime());
profile.setEmail("aa1987417@126.com");
Map<String, String> phone = new HashMap<String, String>();
phone.put("mobilephone", "1532222706");
phone.put("home", "110");
profile.setPhone(phone);
profile.setAddress(address);
User user = new User();
user.setUserId(new Long(503));
user.setUsername("zhouzhou");
user.setProfile(profile);
user.setPassword("hicc");
return user;
}
public static void main(String[] args) {
BeanUtilsExamples a = new BeanUtilsExamples();
User user = a.prepareData();
System.out.println("輸出對象的屬性值---------------------------------");
try {
System.out.println(BeanUtils.getProperty(user, "userId")); //BeanUtils中讀取屬性的方法getProperty()
System.out.println(BeanUtils.getProperty(user, "username"));
System.out.println(BeanUtils.getProperty(user, "password"));
System.out.println(BeanUtils.getProperty(user, "profile.email"));
System.out.println(BeanUtils.getProperty(user, "profile.birthDate"));
System.out.println(BeanUtils.getProperty(user, "profile.phone(home)"));
System.out.println(BeanUtils.getProperty(user, "profile.phone(mobilephone)"));
System.out.println(BeanUtils.getProperty(user, "profile.address[0].city"));
System.out.println(PropertyUtils.getProperty(user, "profile.address[1].country"));
User user2 = new User();
BeanUtils.copyProperties(user2, user); //BeanUtils中復(fù)制屬性的方法getProperty()
System.out.println("輸出復(fù)制屬性的屬性值-------------------------------");
System.out.println(BeanUtils.getProperty(user, "username"));
System.out.println(BeanUtils.getProperty(user, "profile.birthDate"));
System.out.println(BeanUtils.getProperty(user, "profile.phone(home)"));
System.out.println(BeanUtils.getProperty(user, "profile.address[0].city"));
System.out.println("輸出復(fù)制屬性修改以后的屬性值---------------------");
BeanUtils.setProperty(user2, "userId", new Long(8888888)); //設(shè)置屬性的方法
PropertyUtils.setProperty(user2, "username", "周旭");
BeanUtils.setProperty(user2, "profile.email", "549748067@qq.com");
BeanUtils.setProperty(user2, "profile.birthDate", new GregorianCalendar(2008, 8, 1).getTime());
BeanUtils.setProperty(user2, "profile.address[0]", new Address("6666666", "中國","紫園","保定"));
System.out.println(BeanUtils.getProperty(user2, "userId"));
System.out.println(BeanUtils.getProperty(user2, "username"));
System.out.println(BeanUtils.getProperty(user2, "profile"));
System.out.println(BeanUtils.getProperty(user2, "profile.email"));
System.out.println(BeanUtils.getProperty(user2, "profile.birthDate"));
System.out.println(BeanUtils.getProperty(user2, "profile.address[0].city"));
System.out.println("與被復(fù)制屬性值的對象的比較-------------------------------");
System.out.println(BeanUtils.getProperty(user, "userId"));
System.out.println(BeanUtils.getProperty(user, "username"));
System.out.println(BeanUtils.getProperty(user, "profile"));
System.out.println(BeanUtils.getProperty(user, "profile.email"));
System.out.println(BeanUtils.getProperty(user, "profile.birthDate"));
System.out.println(BeanUtils.getProperty(user, "profile.address[0].city"));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}