数据列表及导出Excel报表功能简述
实现思路
- 基于反射
以自定义的bean为驱动, 通过bean的类名反射出相应的class,利用class对象得到bean的属性、方法、注解等等;
- 基于规约
以车贷系统为例,left.jsp为该系统导航页,该导航页中的链接大部分是load相应bean或者DTO的数据,数据列表展示方式大概2种:jsp分页展示、导出excel。如果你想要添加一个新的bean或者DTO只需要在导航页的链接里写规定的链接格式即可,示例:
<a data-url='${path}/report/template/GpsInfo' data-name="业务管理>>合同管理>>GPS安装信息" >GPS安装信息</a>
解释:示例中的url: ${path}/report/template/GpsInfo
${path}是当前应用的上下文路径
/report/template为规约的固定路径(必须这样写)
GpsInfo为用户自定义的bean,如果你想要添加新的bean把这里替换成你自己的bean名称即可
除了在链接中规约之外,在相应的Dao中的方法中也要写上和Bean一样的名字,示例:
|
|
比如你的bean是GpsInfo 那么你的接口方法就写成bean对应的驼峰式写法:gpsInfo, 还有一种例外,上面我说的都是bean的通用写法, 如果是dto那么dao接口方法中需要去掉’Dto’,示例:
|
|
基于规约的总结:
- left.jsp 中的链接通用格式:
${path}/report/template/{你的bean名称}
- Dao接口方法中,如果是bean则将bean的名称写成驼峰式,如果是Dto则将名称写成驼峰式并且去掉最后的Dto
想做个分页列表和Excel数据导出
- 首先自定义你的Bean或者Dto, 然后用注解表示出字段与列名一一对应的关系,举个栗子:
|
|
在left.jsp 中添加导航到GpsInfo的列表,链接写为:
${path}/report/template/GpsInfo
分别在CreditReportDao.java和CreditReportMapper.xml中写出你需要查询的方法、SQL
CreditReportDao.java
|
|
CreditReportMapper.xml
|
|
- 后端获取数据的东西有了, 还差个展示bean或者Dto数据列表以及筛选这些数据的过滤条件的jsp, 我把所有的jsp 展示放在reportTemplate.jsp页面中,在该页面中保留共性(列表展示+EXCEL导出),抽出个性(满足不同的筛选条件)到filterCondition.jsp, 在该页面中, 需要根据bean或者Dto名称做if判断,还是以GpsInfo为参照, 上栗子:
|
|
后语
无规矩不成方圆, 只要按规矩写,可解决一般性需求。