·业务场景 前端动态报表头,给出的方案的动态组成报表头,说是不能在前端做值转化。
数据从数据库中查出,列中字段较多,需要转化的字段也较多,不想太多的改造原代码逻辑。
想到JSON的拼接实际是调用了类中的get方法获取值,决定使用父子类的方式,在子类中重写get方法,想要获取原值时使用super调用父类中方法即可。使用中面临了PageInfo分页组件中声明类型为父类,set子类对象类型检查异常等问题。
伪代码
PageInfo<fatherDto> pageInfo = selectDB();
List<fatherDto> k2vList = new ArrayList;
ChildDto k2vDto = null;
for(fatherDto fItem:pageInfo.getList()) {
k2vDto = new ChildDto ();
BeanUtils.copyProperties(fItem,k2vDto);
k2vList.add(k2vDto);
}
pageInfo.setList(k2vList);
这里使用beancopy的方案会导致运行速度较慢,这要是懒得重构,否则应该考虑使用其他方案,让子类直接包含父类。
希望可以给个更好的方案。