JavaBean转换成Map(配合注解实现属性过滤)

1、首先编写一个注解类,用于标注在字段或者方法上,实现属性的过滤

 Java |  copy code |? 
01
02
package com.renyiwei.wydns.annotation;
03
 
04
import java.lang.annotation.ElementType;
05
import java.lang.annotation.Retention;
06
import java.lang.annotation.RetentionPolicy;
07
import java.lang.annotation.Target;
08
 
09
@Retention(RetentionPolicy.RUNTIME)
10
// 可以注解在方法或者字段上
11
@Target({ ElementType.FIELD, ElementType.METHOD })
12
public @interface ToMapIgnore {
13
 
14
  boolean Value() default true;
15
}
16
 
17

2、编写工具类,实现对象到map的转化(该工具还没有完成读取get方法上的注解)

 Java |  copy code |? 
01
02
package com.renyiwei.wydns.utils;
03
 
04
import java.lang.reflect.Field;
05
import java.util.HashMap;
06
import java.util.Map;
07
 
08
import com.renyiwei.wydns.annotation.ToMapIgnore;
09
 
10
public class CommonUtil {
11
 
12
  public static Map<String, Object> toMap(Object bean) throws IllegalArgumentException, IllegalAccessException {
13
    Map<String, Object> returnMap = new HashMap<String, Object>();
14
    Field[] fields = bean.getClass().getDeclaredFields();
15
    for (Field field : fields) {
16
      //获取该字段的注解
17
      ToMapIgnore annotation = field.getAnnotation(ToMapIgnore.class);
18
   //如果没有注解 或者 注解值为false 则获取该值存入返回的map中
19
      if (annotation == null || !annotation.Value()) {
20
        field.setAccessible(true);
21
        returnMap.put(field.getName(), field.get(bean));
22
      }
23
    }
24
    return returnMap;
25
  }
26
}
27
 
28

3、实例:如果不想转化对象中的module属性,则在起字段上进行注解 @ToMapIgnore既可以

 Java |  copy code |? 
01
02
package com.renyiwei.wydns.domain;
03
 
04
import com.renyiwei.wydns.annotation.ToMapIgnore;
05
 
06
public class Server {
07
 
08
  private Long id;
09
  private String name;
10
  private String apiurl;
11
  private String username;
12
  private String password;
13
 
14
  //在这里进行注解
15
  @ToMapIgnore
16
  private Module module;
17
 
18
  //省略get set方法
19
}
20
 
21

4、调用

 Java |  copy code |? 
1
2
Map<String, Object> serverMap = CommonUtil.toMap(product.getServer());
3

本文出自 全栈笔记 版权所有,你可以在保留原文地址:JavaBean转换成Map(配合注解实现属性过滤) 及作者的情况下到你的网站或博客。

【上一篇】
【下一篇】

您可能感兴趣的文章:

发表评论

您必须 登录 后才能发表评论。