`
ttitfly
  • 浏览: 620368 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

org.apache.commons.beanutils.BeanUtils

    博客分类:
  • java
阅读更多

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.         }  
分享到:
评论

相关推荐

    org.apache.commons.beanutils.BeanUtils实例

    此为BeanUtils的实例。其中apache的包有一个小的BUG已在其中说明。

    org.apache.commons.beanutils.jar

    httpclient 开发依赖的jar。 主要 org.apache.commons.beanutils.jar

    org.apache.poi jar包

    import org.apache.commons.beanutils.PropertyUtilsBean; import org.apache.commons.lang.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; ...

    com.springsource.org.apache.commons.beanutils-1.7.0.jar

    jar包,官方版本,自测可用

    org.apache.poi JAR包

    import org.apache.commons.beanutils.PropertyUtilsBean; import org.apache.commons.lang.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; ...

    org.apache.commons相关的所以jar包

    org.apache.commons相关的所以jar包,包括commons-beanutils-1.8.0-bin.zip;commons-betwixt-0.8.zip;commons-cli-1.1.zip;commons-codec-1.3.zip;commons-collections-3.2.1-bin.zip;commons-digester-1.8.zip...

    org.apache.commons 常用jar 以及部分源码

    以下是压缩文件的jar包名称: commons-validator-1.3.0.jar commons-pool-1.3.jar ...commons-beanutils-1.6.jar 包含两个最常用的源码: commons-beanutils-1.6-src.zip commons-collections-3.2.1-src.zip

    org.apache.commons工具包

    Apache Commons BeanUtils是Java开发中的一个非常重要的工具包,它属于Apache软件基金会的Commons项目。这个工具包提供了大量方便的API,极大地简化了JavaBean对象之间的属性操作,尤其是在处理复杂的对象模型和数据...

    org.apache.commons jar

    "org.apache.commons jar" 指的是这个项目中相关组件的集合,通常包含多个模块,每个模块专注于特定的编程任务。 1. **Apache Commons Lang**: 这个模块提供了许多高级字符串处理、日期和时间操作、数学计算以及...

    org.apache.commons jar包

    这个"org.apache.commons.jar"包是Apache Commons项目的一部分,其中包含了该目录下的一系列资源文件,确保了功能的完整性和多样性。 Apache Commons库的核心理念是创建一系列高质量的、独立的、实用的Java类库,...

    org.apache.commons 全部包

    "org.apache.commons" 是这个项目的主要命名空间,包含了许多子包,用于实现各种实用功能。在这个压缩包中,你可能会找到如 Commons Lang、Commons IO、Commons Collections、Commons BeanUtils 等多个子项目的集合...

    com.springsource.org.apache.commons.beanutils-1.8.0.jar

    jar包,官方版本,自测可用

    org.apache.commons 的 jar 包 源码

    "org.apache.commons"是这个项目中的一个顶级命名空间,它包含了多个子模块,每个模块专注于特定的功能领域。 标题提及的 "org.apache.commons 的 jar 包源码" 指的是这个项目的源代码,开发者可以查看、学习和修改...

    org.apache.commons所有经典jar包收集

    org.apache.commons 的经典jar 包 commons-beanutils-1.8.0-bin、 commons-betwixt-0.8、 commons-cli-1.1、 commons-codec-1.3、 commons-collections-3.2.1-bin、 commons-digester-1.8、 commons-...

    com.springsource相关jar

    包含: ...com.springsource.org.apache.commons.beanutils-1.8.0.jar, com.springsource.org.apache.commons.collections-3.2.1.jar, com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar, ...

    com.springsource

    ... com.springsource.org.apache.axis-1.4.0.jar, com.springsource.org.apache.commons.beanutils-1.8.0.jar, com.springsource.org.apache.commons.collections-3.2.1.jar, ...

    org.apache.commons

    "org.apache.commons" 指的是 Apache Commons 项目下的顶级命名空间,包含了多个子模块,每个模块都专注于解决特定的问题或提供特定的功能。这个 jar 包是将这些功能集合在一起的便利工具,便于开发者集成到自己的 ...

    com.springsource.org.apache.commons.beanutils-1.8.3.jar

    jar包,官方版本,自测可用

    orgapache_commons

    org.apache.commons的jar包,Apache Commons包含了很多开源的工具。 包括commons-beanutils-1.8.0-bin、commons-betwixt-0.8、commons-cli-1.1、commons-codec-1.3、commons-collections-3.2.1-bin、commons-...

Global site tag (gtag.js) - Google Analytics