Beautils介绍
Apache组织开发了一套用于操作JavaBean的API,
这套API考虑到了很多实际开发中的应用场景,
因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。
在工程下新建lib目录,导入commons-beanutils-1.8.3.jar 和支持包commons-logging-1.1.1.jar
选中两个包,右键add as library
Beanutils工具包的常用类:
对属性进行赋值操作
可以实现String向8种基本数据类型的自动转换。如age是int类型的,但也可以使用String f赋值,这就是在BeanUtils内部实现了该转化操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public static void test01() { Person p = new Person(); try { BeanUtils.setProperty(p, "age", "21"); System.out.println(p.getAge()); } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } }
|
封装用户对象
实际运用1:用户注册时提交的数据都是String类型的, 我们需要对用户的信息进行封装 将用户封装一个个对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public static void test02() { String age = "24"; String name = "小明"; String sex = "男";
Map<String,String[]> map = req.getparameterMap(); Person p = new Person(); try {
BeanUtils.populate(p,map); System.out.println(p.getAge() + ".." + p.getName() + ".." + p.getSex()); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }
|
类型转换
由于BeanUtils只支持8种基本数据类型的转换,因此要实现其他类型的转化,就需要注册该类型的转换器。自定义转换器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| public static void test03() { ConvertUtils.register(new Converter() {
@Override public <T> T convert(Class<T> type, Object value) { if (value == null) { return null; } if (!(value instanceof String)) { throw new ConversionException("值支持String类型的转换!"); } String string = (String) value; if (string.trim().equals("")) { return null; } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = (Date) df.parse(string); } catch (ParseException e) { throw new RuntimeException(e); } return (T) date; } }, Date.class); Person p = new Person(); String date = "1992-09-12"; try { BeanUtils.setProperty(p, "date", date); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } System.out.println(p.getDate()); }
|
使用BeanUtils本身自带的转换器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public static void test04() { ConvertUtils.register(new DateLocaleConverter(), Date.class); String date = "1990-08-09"; Person p = new Person(); try { BeanUtils.setProperty(p, "date", date); System.out.println(p.getDate()); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }
|
实际开发中常常把客户机提交的元素封装到Map集合中去。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public static void test05() { String age = "24"; String name = "小明"; String sex = "男"; String date = "1990-08-09"; Map<String, String> map = new HashMap<String, String>(); map.put(name, name); map.put(age, age); map.put(date, date); map.put(sex, sex); Person p = new Person(); try { BeanUtils.populate(p, map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }
|
收集的更加详细的博文