BeanUtils是Apache提供的操作JavaBean属性的工具类,比Java自带的Introspector类用起来方便很多;
但是需要引入commons-beanutils-1.9.2.jar和commons-logging-1.2.jar两个jar包。
BeanUtils操作JavaBean属性的实例:
Person类:
package com.test.beanutil;
import java.util.Date;
/**
* Person
* @author xuhu
*
*/
public class Person
{
//id
private int id;
//姓名
private String name;
//年龄
private int age;
//生日
private Date birthday;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public Date getBirthday()
{
return birthday;
}
public void setBirthday(Date birthday)
{
this.birthday = birthday;
}
}
BeanUtils方式操作Person类的属性:
package com.test.beanutil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.junit.Test;
public class BeanUtilTest
{
@Test
public void test1() throws Exception
{
Person p = new Person();
String id = "1";
String name = "test1";
String age = "15";
String birthday = "1999-06-06";
//注册Date类的转换器
ConvertUtils.register(new Converter()
{
@Override
public <T> T convert(Class<T> arg0, Object arg1)
{
//判断传入的值
if(arg1 == null)
{
return null;
}
if(!(arg1 instanceof String))
{
throw new ConversionException("仅支持String类型的转换");
}
String date = String.valueOf(arg1);
if(date.trim().equals(""))
{
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try
{
return (T) sdf.parse(date);
}
catch (ParseException e)
{
throw new ConversionException(e);
}
}
}, Date.class);
//设置属性
BeanUtils.setProperty(p, "id", id);
BeanUtils.setProperty(p, "name", name);
BeanUtils.setProperty(p, "age", age);
BeanUtils.setProperty(p, "birthday", birthday);
//读取属性
System.out.println(BeanUtils.getProperty(p, "id"));
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "birthday"));
}
}