java遍历一个实体

//遍历order,得到属性值不为空的属性,type:操作类型。0是新增,1是更新
    private Map<String, Object> reflect(Order order,String type) throws Exception{
        Map<String, Object> map=new HashMap<String, Object>();
        Class<? extends Order> cls = order.getClass();
        Field[] fields = cls.getDeclaredFields();
        for(Field f:fields){
            //获取订单表中字段上的不须入库映射的注解
            Transient annon = f.getAnnotation(Transient.class);
            if(annon!=null) {
                continue;
            }
            f.setAccessible(true);
            if(f.getName().equals("serialVersionUID"))continue;
            //如果值不为空
            if(f.get(order)!=null&&StringUtils.isNotBlank(f.get(order).toString())) {
                if(f.get(order) instanceof Date) {
                    map.put(humpToUnderline(f.getName()),DateUtil.dateToString((Date) f.get(order)));
                }else {
                    map.put(humpToUnderline(f.getName()),f.get(order));
                }
            }else if(type.equals("0")) {//新增,获取空值
                map.put(humpToUnderline(f.getName()),null);
            }
        }
        return map;
    }
    
    /***
     * 下划线命名转为驼峰命名
     * 
     * @param para
     *        下划线命名的字符串
     */
     
    public String underlineToHump(String para){
        StringBuilder result=new StringBuilder();
        String a[]=para.split("_");
        for(String s:a){
            if (!para.contains("_")) {
                result.append(s);
                continue;
            }
            if(result.length()==0){
                result.append(s.toLowerCase());
            }else{
                result.append(s.substring(0, 1).toUpperCase());
                result.append(s.substring(1).toLowerCase());
            }
        }
        return result.toString();
    }

    /***
    * 驼峰命名转为下划线命名
     * 
     * @param para
     *        驼峰命名的字符串
     */
     
    public String humpToUnderline(String para){
        StringBuilder sb=new StringBuilder(para);
        int temp=0;//定位
        if (!para.contains("_")) {
            for(int i=0;i<para.length();i++){
                if(Character.isUpperCase(para.charAt(i))){
                    sb.insert(i+temp, "_");
                    temp+=1;
                }
            }
        }
        return sb.toString();
    }

 

posted @ 2019-09-20 15:51  xiaowejie  阅读(1050)  评论(0编辑  收藏  举报