BeanUtils工具
大对数人习惯使用JavaBean的get和set方法来获取和设置JavaBean的属性,但是在Java EE编程的过程中,会经常从配置文件中读取数据,但是从配置文件中读取的数据都是String类型,但是程序并不是只有一种String类型,还有一些自定义的类型,因此,我们将字符串转为特定的数据类型,方法有两种:
1.首先,判断需要的数据类型,然后对字符串调用相关的方法,将其转换为我们需要的数据类型。
2.使用BeanUtils工具;
第一种方法太过繁琐,使用第二种方法只需使用其中两个方法就,即可。
BeanUtils工具解决的主要问题:
把对象的属性数据封装到对象中。
BeanUtils工具使用需要的包:
1.commons-beanutils-1.9.2.jar;
2.commons-logging-1.2.jar;
BeanUtils类发常用方法:
static void populate(Object bean,Map<String,?exteds Object>properties):根据指定的名称/值对为相应的JavaBean属性设置属性值。
static void setProperty(Object bean,String name,Object value): 设置指定的属性,传入的类型要求能转换为相应的类型
static String getProperty(Object bean,String name):返回指定Bean指定属性的值,返回类型是String类型。
BeanUtils的实例:
设置一个Person类:
package cn.it.gan.BeanUtilsDemo; public class Person { private String naem; private int age; public Person() { } public Person(String naem, int age) { super(); this.naem = naem; this.age = age; } public String getNaem() { return naem; } public void setNaem(String naem) { this.naem = naem; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
设置一个BeanUtilsDemo类测试BeanUtils工具
package cn.it.gan.BeanUtilsDemo; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; public class BeanUtilsDemo { public static void main(String[] args) throws Exception, InvocationTargetException { Person p = new Person(); // 使用BeanUtils来为p赋值 BeanUtils.setProperty(p, "naem", "Jack"); BeanUtils.setProperty(p, "age", 29); // 使用BeanUtils工具获得p的值 String name = BeanUtils.getProperty(p, "naem"); String age = BeanUtils.getProperty(p, "age"); System.out.println("姓名为:" + name + ", 年龄为:" + age); // 创建Map集合,用来存放属性 Map map = new HashMap<String, Object>(); map.put("naem", "张三"); map.put("age", 30); // 使用populate()方法来设置属性 BeanUtils.populate(p, map); System.out.println("姓名为:" + p.getNaem() + ", 年龄为:" + p.getAge()); } }
运行结果:
注意:使用setProperty给赋值的话,少赋值一个属性的话是不会报错的,只会是null,多给一个没有的属性赋值的话也不会报错,只是不会赋值进去而已;
使用map集合赋值时,要求Map的Key和JavaBean的属性名时一致的。