BeanUtils是Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作.
可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中.
使用时需要导入jar包:
commons-beanutils-1.8.3.jar
commons-logging-1.1.1.jar
常用工具类有两个:BeanUtils :用于封装数据
ConvertUtils :用于处理类型转换.
常用API:
//功能1:封装表单数据
public void demo01() throws Exception{
//将map数据封装给user
Map<String,String[]>properties=new HashMap<String,String[]>();
propeties.put("username",new String[]{"jack"});
propeties.put("password",new String[]{"1234"});
properties.put("age",new Sting[]{"18"});
User user=new User();
//封装数据
BeanUtils.populate(user,properties);
System.out.println(user);
}
//功能2:封装表单数据,使用类型转换器
public void demo02() throws Exception{
//转换器
Map<String,String[]>properties=new HashMap<String,String[]>();
propeties.put("username",new String[]{"jack"});
propeties.put("password",new String[]{"1234"});
properties.put("age",new Sting[]{"18"});
properties.put("birthday",new String[]{"2012-12-21"});
User usre= new User();
//1 创建BeanUtils提供时间转换器
DateConverter dateConverter = new DateConverter();
//2 设置需要转换的格式
dateConverter.setPattern("yyyy-MM-dd");
//3 注册转换器
ConvertUtils.register(dateConverter,java.util.Date.class);
//封装数据
BeanUtils.populate(user,properties);
System.out.println(user);
//功能3:编写工具类
public class MyBeanUtils{
/**
*将数据封装给JavaBean,支持时间类型转换
*/
public static void populate(Object user,Map<String,String[]>properties){
try{
//1 创建BeanUtils提供时间转换器
DateConverter dateConverter = new DateConverter();
//2 设置需要转换的格式
dateConverter.setPatterns(new String[]{"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"});
//注册转换器
ConvertUtils.register(dateConverter,java.util.Date.class);
//封装数据
BeanUtils.populate(user,properties);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
工具类的使用:
User user=new user();
MyBeanUtils.populate(user,properties);
高级工具类:
/**
*高级封装,不需要new javabean
*
*/
public static <T> T populate(Class<T> beanClass,Map<String,String[]> properties){
try{
//1 使用反射创建实例
T bean = beanClass.newInstance();
//2.1 创建BeanUtils提供时间转换器
DateConverter dateConverter = new DateConverter();
//2.2 设置需要转换的格式
dateConverter.setPatterns(new String[]{"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"});
//2.3 注册转换器
ConvertUtils.register(dateConverter,java.utils.Date.class);
//3 封装数据
BeanUtils.populate(bean,properties);
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
工具类使用2:
User user = MyBeanUtils.populate(User.class,properties);