对Bean添加自定义的两个注释 @Table(tableName="BLACK_INFO",expFileName="黑名单类型",orderBy="id")public class UiBlackInfo {@TableColumn(dbColumn="id")private String id;@TableColumn(dbColumn="reason",excelHeader="理由")privat
对Bean添加自定义的两个注释
@Table(tableName="BLACK_INFO",expFileName="黑名单类型",orderBy="id")
public class UiBlackInfo {
@TableColumn(dbColumn="id")
private String id;
@TableColumn(dbColumn="reason",excelHeader="理由")
private String reason; // 理由
@TableColumn(dbColumn="remarks",excelHeader="备注")
private String remarks; // 备注
//@TableColumn(dbColumn="create_by",excelHeader="创建者")
private String createBy; // 创建者
@TableColumn(dbColumn="create_date",excelHeader="创建日期",dbFunc="to_char(create_date,'yyyyMMdd')")
private String createDate; // 创建日期
@TableColumn(dbColumn="update_by",excelHeader="更新者")
private String updateBy; // 更新者
@TableColumn(dbColumn="update_date",excelHeader="更新日期",dbFunc="to_char(update_date,'yyyyMMdd')")
private String updateDate; // 更新日期
getter and setter ....
}
controller中快速生成报表分页查询结果以及excel导出的方法
/**
* 通用的查询方法。 通过Bean上的Table table和 TableColumn col 注释拼凑成SQL执行。
* select col.dbFunc col.dbColumn,... from table.tableName
* where 1=1 and [col.dbFunc|col.dbColumn]= request.getParameter(field)
* order by tale.orderBy;
* 然后根据col.excelHeader()组织成展示报表或者excel导出。
* 目前把所有字段都作为String来处理。 不是String的,通过dbFunc转成String.
* 2017年10月26日 不是String貌似也没有问题,需要测试下。
* where后面的条件比对,暂时只支持 = 操作。 其他操作等以后代码跑稳定了再扩展把。。
* @param request
* @return
* @throws Exception
*/
protected PageBean
queryData(HttpServletRequest request,PageBean
pageBean) throws Exception{ logger.info(">>>开始通用报表数据查询"); ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass(); // JdbcTemplate appJdbcTemplate = SpringContextUtil.getBean("appJdbcTemplate", JdbcTemplate.class); //得到t的实现类型 Class
repoClass = (Class
)type.getActualTypeArguments()[0]; StringBuilder sql = new StringBuilder("select ");//要执行的SQL //把request里的参数插入到查询对象中。 Field[] fields = repoClass.getDeclaredFields(); StringBuilder sqlCols = new StringBuilder();//sql的字段名 StringBuilder sqlCond = new StringBuilder(" where 1=1 ");//sql的查询条件 List