随笔 - 15, 文章 - 0, 评论 - 5, 引用 - 0
数据加载中……

小结 Commons BeanUtils

 

Commons BeanUtils 的官方网址:http://commons.apache.org/beanutils/

Commins BeanUtils是针对JavaBeans一般性操作的组件,可以用来对JavaBeans进行复制,属性的读取,设置,修改,还以动态构造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
把这三个加入到项目的构件路径下即可。

下面为一个简单的例子

新建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", "中国", "保定", "河北大学"),
    new Address("22222", "中国", "保定", "河北大学工商学院") };
  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中复制属性的方法getProperty()

   System.out.println("输出复制属性的属性值-------------------------------");
   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("输出复制属性修改以后的属性值---------------------");
   BeanUtils.setProperty(user2, "userId", new Long(8888888));   //设置属性的方法
   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("与被复制属性值的对象的比较-------------------------------");
   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();
  }

 }

}


 




 

posted on 2008-08-01 10:38 zhouzhou@ 阅读(588) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: