反射获取某包下某个注解合集对象
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.11</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
<scope>compile</scope>
</dependency>
获取基础包下mybatis-plus的TableName注解
public static List<Map<String,String>> getTableNameList(String basePackage){
List<Map<String,String>> list=new ArrayList<>();
//入参 要扫描的包名
Reflections f = new Reflections(basePackage);
//入参 目标注解类
Set<Class<?>> set = f.getTypesAnnotatedWith(TableName.class);
for(Class<?> clz:set){
Map<String,String> map=new HashMap<>();
map.put("name",clz.getName());
ApiModel annotation = clz.getAnnotation(ApiModel.class);
if(annotation!=null) {
map.put("description",annotation.value());
list.add(map);
}
}
return list;
}
根据上述获取的包名获取属性集合
public static List getTableFieldList(String clz) {
List list = new ArrayList();
Class<?> aClass = null;
try {
aClass = Class.forName(clz);
Field[] tableFields = aClass.getDeclaredFields();
for(Field field:tableFields){
Map<String,String> map=new HashMap<>();
TableField exits = field.getAnnotation(TableField.class);
if(exits==null||(exits!=null&&exits.exist())){
String name = field.getName();
map.put("name",name);
ApiModelProperty annotation = field.getAnnotation(ApiModelProperty.class);
if(annotation!=null){
map.put("desc",annotation.value());
list.add(map);
}
}
}
return list;
} catch (ClassNotFoundException e) {
return list;
}
}