设为首页 收藏本站
查看: 585|回复: 0

[经验分享] org.apache.commons.beanutils.BeanUtils

[复制链接]
累计签到:1365 天
连续签到:1 天
发表于 2017-1-3 08:59:11 | 显示全部楼层 |阅读模式
  1.BeanUtils基本用法:
java 代码

  • package com.beanutil;   
  •   
  • import java.util.Map;   
  •   
  • public class User {   
  •   
  •     private Integer id;   
  •     private Map map;   
  •     private String username;   
  •     public Integer getId() {   
  •         return id;   
  •     }   
  •     public void setId(Integer id) {   
  •         this.id = id;   
  •     }   
  •     public Map getMap() {   
  •         return map;   
  •     }   
  •     public void setMap(Map map) {   
  •         this.map = map;   
  •     }   
  •     public String getUsername() {   
  •         return username;   
  •     }   
  •     public void setUsername(String username) {   
  •         this.username = username;   
  •     }   
  •        
  •        
  • }  

java 代码

  • public class Order {   
  •     private User user;   
  •     private Integer id;   
  •     private String desc;   
  •     public String getDesc() {   
  •         return desc;   
  •     }   
  •     public void setDesc(String desc) {   
  •         this.desc = desc;   
  •     }   
  •     public Integer getId() {   
  •         return id;   
  •     }   
  •     public void setId(Integer id) {   
  •         this.id = id;   
  •     }   
  •     public User getUser() {   
  •         return user;   
  •     }   
  •     public void setUser(User user) {   
  •         this.user = user;   
  •     }   
  •        
  •   
  • }  

java 代码

  •   
  • import java.util.HashMap;   
  • import java.util.Map;   
  •   
  • import org.apache.commons.beanutils.BeanUtils;   
  •   
  • public class Test {   
  •        
  •     private User user = new User();   
  •     private Order order1 = new Order();   
  •     private Order order2 = new Order();   
  •     private Order order3 = new Order();   
  •     private Map map = new HashMap();   
  •     private User user1 = new User();   
  •   
  •     public Test(){   
  •         init();   
  •     }   
  •     public static void main(String[] args) throws Exception{   
  •         Test test = new Test();   
  •         //输出某个对象的某个属性   
  •         System.out.println(BeanUtils.getProperty(test.user, "username"));   
  •            
  •         //输出某个对象的内嵌属性,只要使用点号分隔   
  •         System.out.println(BeanUtils.getProperty(test.order1, "user.username"));   
  •            
  •         //BeanUtils还支持List和Map类型的属性,对于Map类型,则需要以"属性名(key值)"的   
  •         //对于Indexed,则为"属性名[索引值]",注意对于ArrayList和数组都可以用一样的方式进行操作   
  •         System.out.println(BeanUtils.getProperty(test.user1, "map(order2).desc"));   
  •   
  •         //拷贝对象的属性值   
  •         User tempUser = new User();   
  •         BeanUtils.copyProperties(tempUser, test.user1);   
  •            
  •         System.out.println(tempUser.getUsername());   
  •         System.out.println(tempUser.getId());   
  •            
  •            
  •            
  •            
  •     }   
  •        
  •     //初始化   
  •     public void init(){   
  •            
  •            
  •         user.setId(0);   
  •         user.setUsername("zhangshan");   
  •            
  •            
  •         order1.setId(1);   
  •         order1.setDesc("order1");   
  •         order1.setUser(user);   
  •            
  •            
  •            
  •         order2.setId(2);   
  •         order2.setDesc("order2");   
  •         order2.setUser(user);   
  •            
  •            
  •         order3.setId(3);   
  •         order3.setDesc("order3");   
  •         order3.setUser(user);   
  •            
  •            
  •         map.put("order1", order1);   
  •         map.put("order2", order2);   
  •         map.put("order3", order3);   
  •            
  •            
  •         user1.setId(1);   
  •         user1.setUsername("lisi");   
  •         user1.setMap(map);   
  •            
  •            
  •     }   
  • }   

  输出结果为:
  zhangshan
zhangshan
order2
lisi
1
  2. BeanCompartor 动态排序
  A:动态设定Bean按照哪个属性来排序,而不再需要再实现bean的Compare接口进行复杂的条件判断
java 代码

  • //动态设定Bean按照哪个属性来排序,而不再需要再实现bean的Compare接口进行复杂的条件判断   
  •         List<order></order> list = new ArrayList<order></order>();   
  •            
  •         list.add(test.order2);   
  •         list.add(test.order1);   
  •         list.add(test.order3);   
  •            
  •         //未排序前   
  •         for(Order order : list){   
  •             System.out.println(order.getId());   
  •         }   
  •         //排序后   
  •         Collections.sort(list, new BeanComparator("id"));   
  •         for(Order order : list){   
  •             System.out.println(order.getId());   
  •         }  

  B:支持多个属性的复合排序
java 代码

  • //支持多个属性的复合排序   
  •         List <beancomparator></beancomparator> sortFields = new ArrayList<beancomparator></beancomparator>();    
  •         sortFields.add(new BeanComparator("id"));   
  •         sortFields.add(new BeanComparator("desc"));   
  •         ComparatorChain multiSort = new ComparatorChain(sortFields);   
  •         Collections.sort(list, multiSort);   
  •            
  •         for(Order order : list){   
  •             System.out.println(order.getId());   
  •         }  

  C:使用ComparatorUtils进一步指定排序条件
  上面的排序遇到属性为null就会抛出异常, 也不能设定升序还是降序。
  不过,可以借助commons-collections包的ComparatorUtils
  BeanComparator,ComparableComparator和ComparatorChain都是实现了Comparator这个接口
java 代码

  • //上面的排序遇到属性为null就会抛出异常, 也不能设定升序还是降序。   
  •         //不过,可以借助commons-collections包的ComparatorUtils   
  •         //BeanComparator,ComparableComparator和ComparatorChain都是实现了Comparator这个接口   
  •         Comparator mycmp = ComparableComparator.getInstance();      
  •         mycmp = ComparatorUtils.nullLowComparator(mycmp);  //允许null      
  •         mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序      
  •         Comparator cmp = new BeanComparator("id", mycmp);   
  •         Collections.sort(list, cmp);   
  •         for(Order order : list){   
  •             System.out.println(order.getId());   
  •         }  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-323030-1-1.html 上篇帖子: Apache的安装、配置及卸载 下篇帖子: Apache Commons-configuration 学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表