业务数据分页处理思想

本文探讨了在处理业务数据分页时的一种思想,强调了如何通过querybean优化分页查询过程。提出在jsp中通过脚本判断页码越界,或者在querybean中直接获取startIndex和endIndex,避免不必要的请求。同时指出,提前获取总记录数并注入querybean,可以在控制层或service层更好地处理分页条件。总结了两种不同的分页处理方式,建议根据实际情况选择最合适的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我相信大家从数据来源拿到数据后一般都会有做分页处理。

二话不说,需要通过jsp将当前页面的currpage 和pagesize 通过(如果是异步的话,直接用querybean接收这两个值会更好一些)querybean传到Control、servlet层或者action进行处理,然后调service—>dao的方法进行查询,将返回结果放入querybean中传到jsp界面进行数据加载.方法大同小异。querybean如下:

    private int currPage=1;//当前页码
	private int pageSize=5;//页面显示的记录数
	private int count;//总记录数
	private int startIndex;//查询的起始下标
	private int endIndex;//查询的结束下标
	private List<E> list;//查询获取到的数据

这种思想:

1、页码越界操作必须在jsp中通过脚本判断完成。

2、如果判断不成立,不需要发送请求。

解释上面提及传querybean:

直接用querybean接收,可以直接将querybean传到service层进行数据处理,通过get方法拿值。可以减少控制层的逻辑处理

3、通过伪列rownum的分页条件必须在控制层或者service层实现,也有直接在sql语句中通过计算实现

 

进入正题,说说本人学到的一个思想;

开始之前,说明一下,这里主要针对第3小点展开思想拓展

抛出疑问:既然在查询语句中必须要得到查询的伪列的区间数值,而且我在一开始亮出的querybean中又包含了这两个成员变量,并且我传入的也是querybean对象,为何不能好好利用起来startIndex;//查询的起始下标和endIndex;//查询的结束下标?

 

抛出代码

public int getStartIndex() {//计算 起始下标
		if(this.currPage>Math.ceil((this.count*1.0/this.pageSize))){//假设 当前页码超出范围 按照最后一页算
			this.currPage=(int) Math.ceil((this.count*1.0/this.pageSize));
		}
		if(this.currPage<=1){
			this.currPage=1;//如果传入的当前页码小于1  就按照1来算
		}       
		startIndex=(this.currPage-1)*pageSize+1;//查询的起始下标=(当前页码-1)*页面显示的记录数+1 
		return startIndex;




public int getEndIndex() {//计算 结束下标
		endIndex=this.getStartIndex()+pageSize-1;//结束下标=起始下标+页面显示的条数-1
		return endIndex;
	}

 

解释:

既然在网页中传入了当前页面和页面显示数据,那我们就直接在querybean中通过getStartIndex ,getEndIndex两个get方法,在方法中直接调用currPage,pageSize的get方法拿到这两个值,然后得到查询数据的其实和结束,这样就可以直接在sql语句中使用这两个成员变量的值。

而且还可以将jsp的脚本所需要进行的页面越界操作的判断在这里直接解决掉。

 

注意:大家可以发现getStartIndex ,getEndIndex方法中,用到了 count;//总记录数,因此,我们必须要在控制层先调方法获得 count;//总记录数,通过set方法注入querybean对象;

 

总结:

两种思想的数据处理的切入点不同;

而且发请求的方法也完全改变,在jsp中通过脚本进行分页越界的判断,可以过滤一些不必要发送的请求。

而在querybean中处理的话,请求总是都会发送,只是处理的数据不同而已,

因此,方法灵活多变,没有最好的方法,只有更合适的方法

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值