通过java反射获取class中的属性上注解的值

最近新做了一个资产管理系统,因为字段比较的多,中间会牵涉到excel导出的标题栏问题,固定资产表有120多个字段....所以在处理数据库列名和标题栏文字转换的时候,如果一个个去对应的写实在太麻烦了...就索性用了反射机制来处理,几行代码搞定

 

 

先把这个java bean贴一部分的感受下....将近400行,我用的还是getter和setter注解,里面全是一个个的参数....

 

 

 

下面贴下代码,file上面的就不贴了,就是个excel的文件

ExcelReader reader = ExcelUtil.getReader(file);
//将excel转为list集合
List<Map<String, Object>> readAll = reader.read(5,6,Integer.MAX_VALUE);
//将差异的内容保存
ArrayList<Map<String, Object>> rows =  CollUtil.newArrayList(readAll);
// 通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter(path+File.separator+"dbNoNexistent-"+nowDate+".xlsx");
//通过反射进行header处理
customDBNoNexistentHeader(writer);
// 合并单元格后的标题行,使用默认标题样式
writer.merge(rows.get(0).keySet().size()-1, "资产管理系统中不存在的资产编号");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
log.info("导出数据库不存在的资产编号成功===={}",fileName);
// 关闭writer,释放内存
writer.close();

 

private void customDBNoNexistentHeader(ExcelWriter writer) throws NoSuchFieldException {
    //通过反射获取到类
    Class fixedClass = FixedAssets.class;
    Field[] fields = fixedClass.getDeclaredFields();
    for(Field field : fields){
        ApiModelProperty api = field.getAnnotation(ApiModelProperty.class);
        if(null != api && null != api.value()){
            writer.addHeaderAlias(field.getName(), api.value());
        }
    }
}

版权声明:本文为weixin_39989962原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。