seasun  
          在不斷模仿、思考、總結中一步一步進步!
          公告
          •     我的blog中的部分資源是來自于網絡上,如果您認為侵犯了您的權利,請及時聯系我我會盡快刪除!E-MAIL:shiwenfeng@aliyun.com和QQ:281340916,歡迎交流。

          日歷
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          常用鏈接

          隨筆分類

          good blog author

          積分與排名

          • 積分 - 81738
          • 排名 - 700

          最新評論

          閱讀排行榜

           

          1.BeanUtils基本用法:

          java 代碼
          1. package com.beanutil;   
          2.   
          3. import java.util.Map;   
          4.   
          5. public class User {   
          6.   
          7.     private Integer id;   
          8.     private Map map;   
          9.     private String username;   
          10.     public Integer getId() {   
          11.         return id;   
          12.     }   
          13.     public void setId(Integer id) {   
          14.         this.id = id;   
          15.     }   
          16.     public Map getMap() {   
          17.         return map;   
          18.     }   
          19.     public void setMap(Map map) {   
          20.         this.map = map;   
          21.     }   
          22.     public String getUsername() {   
          23.         return username;   
          24.     }   
          25.     public void setUsername(String username) {   
          26.         this.username = username;   
          27.     }   
          28.        
          29.        
          30. }  
          java 代碼
          1. public class Order {   
          2.     private User user;   
          3.     private Integer id;   
          4.     private String desc;   
          5.     public String getDesc() {   
          6.         return desc;   
          7.     }   
          8.     public void setDesc(String desc) {   
          9.         this.desc = desc;   
          10.     }   
          11.     public Integer getId() {   
          12.         return id;   
          13.     }   
          14.     public void setId(Integer id) {   
          15.         this.id = id;   
          16.     }   
          17.     public User getUser() {   
          18.         return user;   
          19.     }   
          20.     public void setUser(User user) {   
          21.         this.user = user;   
          22.     }   
          23.        
          24.   
          25. }  

           

          java 代碼
          1.   
          2. import java.util.HashMap;   
          3. import java.util.Map;   
          4.   
          5. import org.apache.commons.beanutils.BeanUtils;   
          6.   
          7. public class Test {   
          8.        
          9.     private User user = new User();   
          10.     private Order order1 = new Order();   
          11.     private Order order2 = new Order();   
          12.     private Order order3 = new Order();   
          13.     private Map map = new HashMap();   
          14.     private User user1 = new User();   
          15.   
          16.     public Test(){   
          17.         init();   
          18.     }   
          19.     public static void main(String[] args) throws Exception{   
          20.         Test test = new Test();   
          21.         //輸出某個對象的某個屬性   
          22.         System.out.println(BeanUtils.getProperty(test.user, "username"));   
          23.            
          24.         //輸出某個對象的內嵌屬性,只要使用點號分隔   
          25.         System.out.println(BeanUtils.getProperty(test.order1, "user.username"));   
          26.            
          27.         //BeanUtils還支持List和Map類型的屬性,對于Map類型,則需要以"屬性名(key值)"的   
          28.         //對于Indexed,則為"屬性名[索引值]",注意對于ArrayList和數組都可以用一樣的方式進行操作   
          29.         System.out.println(BeanUtils.getProperty(test.user1, "map(order2).desc"));   
          30.   
          31.         //拷貝對象的屬性值   
          32.         User tempUser = new User();   
          33.         BeanUtils.copyProperties(tempUser, test.user1);   
          34.            
          35.         System.out.println(tempUser.getUsername());   
          36.         System.out.println(tempUser.getId());   
          37.            
          38.            
          39.            
          40.            
          41.     }   
          42.        
          43.     //初始化   
          44.     public void init(){   
          45.            
          46.            
          47.         user.setId(0);   
          48.         user.setUsername("zhangshan");   
          49.            
          50.            
          51.         order1.setId(1);   
          52.         order1.setDesc("order1");   
          53.         order1.setUser(user);   
          54.            
          55.            
          56.            
          57.         order2.setId(2);   
          58.         order2.setDesc("order2");   
          59.         order2.setUser(user);   
          60.            
          61.            
          62.         order3.setId(3);   
          63.         order3.setDesc("order3");   
          64.         order3.setUser(user);   
          65.            
          66.            
          67.         map.put("order1", order1);   
          68.         map.put("order2", order2);   
          69.         map.put("order3", order3);   
          70.            
          71.            
          72.         user1.setId(1);   
          73.         user1.setUsername("lisi");   
          74.         user1.setMap(map);   
          75.            
          76.            
          77.     }   
          78. }   

           

          輸出結果為:

          zhangshan
          zhangshan
          order2
          lisi
          1

           

          2. BeanCompartor 動態排序

          A:動態設定Bean按照哪個屬性來排序,而不再需要再實現bean的Compare接口進行復雜的條件判斷

          java 代碼
          1. //動態設定Bean按照哪個屬性來排序,而不再需要再實現bean的Compare接口進行復雜的條件判斷   
          2.         List<order></order> list = new ArrayList<order></order>();   
          3.            
          4.         list.add(test.order2);   
          5.         list.add(test.order1);   
          6.         list.add(test.order3);   
          7.            
          8.         //未排序前   
          9.         for(Order order : list){   
          10.             System.out.println(order.getId());   
          11.         }   
          12.         //排序后   
          13.         Collections.sort(list, new BeanComparator("id"));   
          14.         for(Order order : list){   
          15.             System.out.println(order.getId());   
          16.         }  

           

          B:支持多個屬性的復合排序

          java 代碼
          1. //支持多個屬性的復合排序   
          2.         List <beancomparator></beancomparator> sortFields = new ArrayList<beancomparator></beancomparator>();    
          3.         sortFields.add(new BeanComparator("id"));   
          4.         sortFields.add(new BeanComparator("desc"));   
          5.         ComparatorChain multiSort = new ComparatorChain(sortFields);   
          6.         Collections.sort(list, multiSort);   
          7.            
          8.         for(Order order : list){   
          9.             System.out.println(order.getId());   
          10.         }  

           

          C:使用ComparatorUtils進一步指定排序條件

          上面的排序遇到屬性為null就會拋出異常, 也不能設定升序還是降序。
            不過,可以借助commons-collections包的ComparatorUtils
            BeanComparator,ComparableComparator和ComparatorChain都是實現了Comparator這個接口

          java 代碼
          1. //上面的排序遇到屬性為null就會拋出異常, 也不能設定升序還是降序。   
          2.         //不過,可以借助commons-collections包的ComparatorUtils   
          3.         //BeanComparator,ComparableComparator和ComparatorChain都是實現了Comparator這個接口   
          4.         Comparator mycmp = ComparableComparator.getInstance();      
          5.         mycmp = ComparatorUtils.nullLowComparator(mycmp);  //允許null      
          6.         mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序      
          7.         Comparator cmp = new BeanComparator("id", mycmp);   
          8.         Collections.sort(list, cmp);   
          9.         for(Order order : list){   
          10.             System.out.println(order.getId());   
          11.         }  
          posted on 2009-12-30 11:20 shiwf 閱讀(958) 評論(0)  編輯  收藏 所屬分類: 3.6 BeanUtils

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          Copyright © shiwf Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 绍兴县| 文水县| 南昌县| 依安县| 昆山市| 张家川| 大理市| 石棉县| 克山县| 铜山县| 老河口市| 镇坪县| 新邵县| 韶山市| 龙陵县| 边坝县| 灵武市| 类乌齐县| 大安市| 阿荣旗| 合水县| 崇左市| 宜章县| 肃宁县| 广河县| 邯郸市| 蓬莱市| 收藏| 柘城县| 黑龙江省| 高州市| 东光县| 北安市| 大埔县| 蒲江县| 洛扎县| 兴仁县| 固原市| 正宁县| 永平县| 威信县|