java jdbc的优化之BeanUtils组件

1. BeanUtils组件

1.1 简介

程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件。

  BeanUtils组件,  作用是简化javabean的操作!

 

用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件!

 

 

使用BenUtils组件:

  1. 引入commons-beanutils-1.8.3.jar核心包
  2. 引入日志支持包: commons-logging-1.1.3.jar

 

如果缺少日志jar文件,报错:

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)

at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:117)

at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)

 

1.2 实例, 基本用法

  方法1: 对象属性的拷贝

  BeanUtils.copyProperty(admin, "userName", "jack");

  BeanUtils.setProperty(admin, "age", 18);

  方法2: 对象的拷贝

  BeanUtils.copyProperties(newAdmin, admin);

  方法3map数据拷贝到javabean  【注意:map中的key要与javabean的属性名称一致】

  BeanUtils.populate(adminMap, map);

 1     // 1:对javabean的基本操作
 2     @Test
 3     public void test1() throws Exception {
 4 
 5         // 创建User对象
 6         User user = new User();
 7 
 8         // a:BeanUtiles组件实现对象属性的拷贝
 9         BeanUtils.copyProperty(user, "userName", "张三");
10         BeanUtils.setProperty(user, "age", 22);
11         // 总结1: 对于基本数据类型,会自动进行类型转换
12 
13         // b:BeanUtiles组件实现对象的拷贝
14         User newuser = new User();
15         BeanUtils.copyProperties(newuser, user);
16 
17         // c:beanUtiles组件实现把map数据拷贝到对象中
18         // 先创建个map集合,并给予数据
19         Map<String, Object> maptest = new HashMap<String, Object>();
20         maptest.put("userName", "lzl");
21         maptest.put("age", 21);
22         // 创建User对象
23         User userMap = new User();
24         BeanUtils.populate(userMap, maptest);
25 
26         // 测试:
27         System.out.println(userMap);
28     }

1.3 实例日期类型的拷贝

  需要注册日期类型转换器,2种方式参见下面代码:

 

 1 // 自定义日期类型转换器
 2     @Test
 3     public void Date1() throws Exception {
 4 
 5         // 模拟表单数据
 6         String name = "mark";
 7         String age = "22";
 8         String birth = "1994-09-09";
 9 
10         // 1:创建对象
11         User user = new User();
12 
13         // 2:注册日期转换器:自定义的
14 
15         ConvertUtils.register(new Converter() {
16 
17             @Override
18             public Object convert(Class type, Object value) {
19                 // 1:首先对进来的字符串数据进行判断
20                 if (type != Date.class) {
21                     return null;
22                 }
23                 if (value == null || "".equals(value.toString().trim())) {
24                     return null;
25                 }
26             
27                 try {
28                     // 2:字符串转换为日期
29                     // 格式化日期,定义
30                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
31                     return sdf.parse(value.toString());
32                 } catch (ParseException e) {
33                     throw new RuntimeException(e);
34                 }
35             }
36 
37         }, Date.class);
38     //这里使用对象的属性的拷贝,把所需要的变量(属性)拷贝到user对象中去
39         BeanUtils.copyProperty(user, "userName", name);
40         BeanUtils.copyProperty(user, "age", age);
41         BeanUtils.copyProperty(user, "birthdayF", birth);
42 
43         System.out.println(user);
44     }

 

posted @ 2016-11-05 10:10  卡拉瓦  阅读(565)  评论(0编辑  收藏  举报