程序中對javabean的操做很頻繁, 因此apache提供了一套開源的api,方便對javabean的操做!即BeanUtils組件。java
BeanUtils組件, 做用是簡化javabean的操做!apache
用戶能夠從www.apache.org下載BeanUtils組件,而後再在項目中引入jar文件!api
使用BenUtils組件:ide
若是缺乏日誌jar文件,報錯:測試
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactoryspa
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)日誌
at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:117)code
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)orm
方法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 }
須要註冊日期類型轉換器,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 }