最近做统计报表,查询出来的数据并不是客户所想要的数据,需要再计算,比如,你可以查询出本期的数据,数据里有很多字段,每个字段中又有很多数值。查询出来的结果只有单纯的数值,如果我们还要在界面中,每一个字段中每个数据要显示出相应的比重,如下
作案手法 警情数 性别
男 女 未知
商品交易 56 39 17 0
冒充客服 56 37 10 0
。。。。。。。。。。。。。。。。。。
以上那种是我们数据库可以直接查询到的,但如果我要做成这样:
作案手法 警情数 性别
男 女 未知
商品交易 56 39 17 0
比重 29.1% 69.64% 20.36% 0.00%
。。。。。。。。。。。。。。。。。。
合计。。。。。。。。。。。。。。。。。。。。。。
我不知道数据库是否可以直接写出这样的逻辑计算并整成一个视图直接后台调用,但我觉得麻烦,所以都在后台进行数据的计算与重新整理成一个新的集合,这样前台接收数据就可按字段进行数据显示。
问题来了,我们平时前台分页都是后台数据库查询时直接传起始页码数和显示页数(比如一页显示20条数据)。然后查询出来的数据就是20条数据。但新的集合,却不是查询出来的,而是查询出来后重新计算与整合而成的新集合,这个时候,我们就要用到集合的分页。代码如下。
我前台界面用的是Easyui控件,若是其他控件或是没有控件的,前台需要自己写一下,这并不难,可以去百度一下。但后台是一样的,我这里只写后台代码
int intPage = Integer.parseInt((page == null || page == "0")?"1":page);
int number = Integer.parseInt((rows == null || rows == "0")?"20":rows);
int start = (intPage - 1)*number;
int totalCount = list.size();
int pageCount = totalCount % number == 0 ? totalCount / number : totalCount / number +1;
List<User> user = null;
if(intPage == pageCount){
user = list.subList(start,totalCount );
}else{
user = list.subList(start,start+number);
}