1.
List<QueryApplicationForm> applyList = dataBaseService.findEntities(hql, regulars, values.toArray());
List<Object> objectList=new ArrayList<Object>();
//将状态转化为文字说明
for(QueryApplicationForm d:applyList){
if(null!=d.getUnitStatus()&&1==d.getUnitStatus()){
d.setUnitExplain("存在");
}else{
d.setUnitExplain("不存在");
}
switch(d.getApplicationStatus()){
case 1:d.setStatusExplain("已申请");
break;
case 2:d.setStatusExplain("审核通过");
break;
case 3:d.setStatusExplain("审核不通过");
break;
case 4:d.setStatusExplain("查询中");
break;
case 5:d.setStatusExplain("查询异常");
break;
case 6:d.setStatusExplain("查询完成");
break;
}
objectList.add(d);
}
Class<QueryApplicationForm> c=QueryApplicationForm.class;
Field fields[]=c.getDeclaredFields();
String headers1[]={"序号","申请表编码","查询主题名称","申请人","被查企业名称","被查企业是否存在","查询申请时间","当前状态"};
String columnIds[]={"number","applicationFormCode","modelName","applicantName","applicantUnitName","unitExplain","applicationTime","statusExplain"};
String fileName = "查询申请详情";
this.downloadDatagridDetail(objectList, headers1, columnIds, fileName,fields,1,request, response);
2.
《1》获得所需对象的类集合。
objectList
《2》获得该对象所有的属性值集合
Class<QueryApplicationForm> c=QueryApplicationForm.class;
Field fields[]=c.getDeclaredFields();
《3》这是我自己写的调用方法,这个方法中将传过来的类集合进行获取其属性值,objectList,fields其余参数是个人业务参数,可忽略
this.downloadDatagridDetail(objectList, headers1, columnIds, fileName,fields,1,request, response);
3.这里贴出调用方法用到反射的相关代码:
public void downloadDatagridDetail(List<Object> lists,String headers1[],String columnIds[],String fileName,Field fields[],int mo,HttpServletRequest request,
HttpServletResponse response){
/**
* 导出查找到的数据
*/
List<Map> mapList=new ArrayList<Map>();
int num=1;
String message = "导出失败";
for(Object obj:lists){
Map map=new HashMap();
map.put("number", num);
/**
* 通过遍历反射获得对象属性值
*/
for(Field field:fields){
field.setAccessible(true);
// String fieldValue = null;
// fieldValue = (String)field.get(obj);
try {
//mo是为了解决冲突多加的限制条件(一般可以忽略此条件)
if(field.getName().equals("model")&&mo==1){
QueryIntModel dto =(QueryIntModel)field.get(obj);
String modelName = dto.getModelName();
map.put("modelName", modelName);
}else if(field.getName().equals("modelName")){
//这里不再重复取值
}else{
map.put(field.getName(), field.get(obj));
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
mapList.add(map);
num++;
}
这样mapList就获得了所有你需要的对象及其属性值。