汇总统计查询,使用JPA对数据库符合要求的数据某些字段进行求和生成新的实体 ,返回分页查询(Pagination手动进行分页)

需求:对汇总的结果进行统计,分为日统计,月统计,年统计,及普通统计
对前三个统计,可以使用框架对数据库直接进行查询返回分页的结果。普通统计根据用户输入的开始时间和结束时间对数据库进行求和运算

根据代码

manager层:
ge 为Repo 方法查询数据库返回的结果,对于普通统计来说,手动进行分页返回前台。分页计算如下:

	Pagination page = new Pagination();
		int pageCount = ge.size() % req.getPageSize() == 0 ? ge.size() / req.getPageSize()
				: ge.size() / req.getPageSize() + 1;
		if (ge.size() > req.getPageSize()) {
			if (req.getPageNo() > 0 && req.getPageNo() < pageCount)
				result = ge.subList((req.getPageNo() - 1) * req.getPageSize(), req.getPageNo() * req.getPageSize());
			else
				result = ge.subList((req.getPageNo() - 1) * req.getPageSize(), ge.size());
		} else {
			result.addAll(ge);
		}
		page.setCurrentPage(req.getPageNo());
		page.setPageSize(req.getPageSize());
		page.setPageCount(pageCount);
		page.setTotalCount(ge.size());
		page.setResult(result);
		return page;

Repo层:

@Query(" select  new  cn.com.taiji.business.stat.entity.summary.ErrCount(obcc,sum(dbcount),sum(correctCount),sort) from ErrCount  where  statTime >= ?1 and statTime <= ?2 ")
	public List<ErrCount> findByGenerate(String calendarDateTime, String calendarDateTime2);

上面的JPA 中通过 new 实体类中的构造函数来的到查询结果,因为需要统计的字段为int,所以在求和的返回的结果的构造函数中又强转成了int, long 为数据库sum相加的和

entity:

	public ErrCount(String obcc, long dbcount, long filecount, long totalcount,
			long autoPhoneCount, long manualPhoneCount, long totalPhoneCount, long correctCount, int sort) {
		this.obcc = obcc;
		this.dbcount = (int)dbcount;
		this.filecount = (int)filecount;
		this.totalcount = (int)totalcount;
		this.autoPhoneCount = (int)autoPhoneCount;
		this.manualPhoneCount = (int)manualPhoneCount;
		this.totalPhoneCount = (int)totalPhoneCount;
		this.correctCount = (int)correctCount;
		this.sort = sort;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值