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

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

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

a5efcd73df53eeeb8301198a2f8ec51f.png170ad2eeb3327b814ac8a6a83b5dcb3f.png

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

ExcelReader reader = ExcelUtil.getReader(file);

//将excel转为list集合

List> readAll = reader.read(5,6,Integer.MAX_VALUE);

//将差异的内容保存

ArrayList> 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());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值