关于分页处理的问题,求救
对于分页处理,因为MVC分层,从逻辑层到表示层只能返回一种数据,因为需要获取总页数和第几页的数据。总数大概就几千条方案1:全部查询出来,再分页,这样可以获取总页数。
方案2:使用数据库的分页处理,按照页查询出数据。然后再查询一次总页数
方案3:把总页数和list封装成一个新的类,从逻辑层返回这个封装类。
第一种会不会占太多的内存?
第二种会不会造成service逻辑层设计过于凌乱?因为在service逻辑层要设计两个函数才行
第三种会不会造成耦合过高?因为又要建封装类?
一般业内的人是怎么做的?求大神回答 --------------------编程问答-------------------- 数据量大时建议第二种。 --------------------编程问答-------------------- 3或者2 2执行顺序倒过来。 --------------------编程问答-------------------- 建议使用“真分页”,也就是需要显示什么就去数据库读取什么,还有要根据数据库的不同,优化好你的查询SQL语句,比如MySql的分页,用limit?,?这种分页在数据多时是不建议使用的! --------------------编程问答-------------------- 建议 第二种 用存储过程。 --------------------编程问答-------------------- 2+3
耦合 / 易用 自己平衡 --------------------编程问答-------------------- 对自己的业务数据做一个预判,如果数据量不大,采用任何一种都可以。如果数据量较大的话,建议采用第二种。 --------------------编程问答-------------------- 建议第二种 --------------------编程问答-------------------- 一般都是第三种,将分页方法封装成一个类,类里面写一个方法返回list,方法里面的参数大概简单可以这样
firstResult 开始索引,如果输入值为-1,即获取全部数据
maxResult 每页获取的记录数,如果输入值为-1,即获取全部数据
where 条件语句,不带where关键字,条件语句只能使用位置参数,位置参数的索引值以1开始,如:ousername=?1 and password=?2
条件语句出现的位置参数值
public list getScrollData(int firstResult, int maxResult,String where, Object[] param );
比如查找key=888的数据,第8条数据开始显示,一页显示10条数据,可以这样调用
xxx.getScrollData(8,10,"key=?1",888)
补充:Java , Web 开发