beanUtils的用法

举例1:使用BeanUtils工具封装用户提交的数据。

 1 public static void main(String[] args)throws Exception {
 2 
 3        // 模拟用户的输入的数据如下
 4 
 5        String name = "XML基础";
 6 
 7        String author = "焦宁波";
 8 
 9        String price = "99.99";
10 
11        String date = "2013-01-04";
12 
13        Book book = new Book();
14 
15        // 任务是将以上的属性设置给指定的Book对象
16 
17        BeanUtils.setProperty(book, "name", name);
18 
19        BeanUtils.setProperty(book, "author", author);
20 
21        BeanUtils.setProperty(book, "price",price );
22 
23        // 查看属性是否封装好
24 
25        System.out.println(book);
26 
27 }

 

发现使用上面的代码可以省略基本数据类型的转型的问题。进而提高代码的开发效率。

举例2:自定义一个类型转换器类。

 1 public static void main(String[] args)throws Exception {
 2 
 3        // 模拟用户的输入的数据如下
 4 
 5        String name = "XML基础";
 6 
 7        String author = "焦宁波";
 8 
 9        String price = "99.99";
10 
11        String date = "2013-01-04";
12 
13       
14 
15        Book book = new Book();
16 
17       
18 
19        // 注册一个自己的转换器
20 
21        /**
22 
23         * converter指定具体的转换器
24 
25         * clazz遇到什么类型调用上面的转换器
26 
27         */
28 
29        ConvertUtils.register(
30 
31               new Converter(){
32 
33               // 回调方法  
34 
35               @Override
36 
37               public Object convert(Class type, Object value) {
38 
39                   if(value == null){
40 
41                      return null;
42 
43                   }
44 
45                   // 转换为String
46 
47                   String data = (String)value;
48 
49                   // 将指定格式的字符串转换为Date
50 
51                   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
52 
53                   Date date  = null;
54 
55                   try {
56 
57                      date = format.parse(data);
58 
59                      return date;
60 
61                   } catch (ParseException e) {
62 
63                      e.printStackTrace();
64 
65                      return null;
66 
67                   }
68 
69               }
70 
71               },
72 
73               Date.class);
74 
75        // 任务是将以上的属性设置给指定的Book对象
76 
77        BeanUtils.setProperty(book, "name", name);
78 
79        BeanUtils.setProperty(book, "author", author);
80 
81        BeanUtils.setProperty(book, "price",price );
82 
83        BeanUtils.setProperty(book, "date",date );
84 
85        // 查看属性是否封装好
86 
87        System.out.println(book);
88 
89 }

 

如果每次遇到一个复杂类型都需要自定义转换器,那样的话实在麻烦。大家看在开发的时候可以先查看该接口是否提供了有效的实现类。

ConvertUtils.register(new DateLocaleConverter(), Date.class);

其实真正的封装好的数据需要存储在数据库中,那么javabean的数据类型应该和数据库的数据类型保持一致,那么在声明持久化javabean的时候需要全部为数据库的基本数据类型。

因此大家在JavaBean中需要导入的是java.sql.Date类,这样就直接可以将日期自动转换了。

举例3:实现封装好的JavaBean对象的属性拷贝。

1 // 实现属性封装数据的一个拷贝
2 
3 Book copy = new Book();
4 
5 System.out.println(copy);
6 
7 PropertyUtils.copyProperties(copy, book);
8 
9 System.out.println(copy);

 

思考:如果使用BeanUtils封装用户的数据,那么也就是一个一个设置啊?岂不是也很麻烦?

其实在真是的环境中我们可以直接获取用户提交的所有的数据信息,只需要进行遍历即可,但是为了方便快速的设置,那么可以将javabean中的属性名和用户提交的数据名保持一致。

posted on 2014-05-10 12:52  wf110  阅读(4090)  评论(0编辑  收藏  举报