首页 > 代码库 > java jdbc的优化之BeanUtils组件
java jdbc的优化之BeanUtils组件
1. BeanUtils组件
1.1 简介
程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件。
BeanUtils组件, 作用是简化javabean的操作!
用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件!
使用BenUtils组件:
- 引入commons-beanutils-1.8.3.jar核心包
- 引入日志支持包: 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);
方法3: map数据拷贝到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 =http://www.mamicode.com/= 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 }
java jdbc的优化之BeanUtils组件