锁定老帖子 主题:理想的分页方案
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-14
大家可以尝试下.程序是否更加干净,程序员工作是否更少.现我的系统就是采用此种方式. 效果很好! 以前的分页总是Action中获取分页信息.然后在service,dao的方法中传递参数进行分页查询,返回分页的信息. 我上一个项目就是这样.导致service,dao中有大量的page参数.曾经想过用AOP方式进行分页参数的获取.填充.但是分页与不分页混乱,不易控制. 改进了下用AOP的思路.完成此种分页方案.欢迎大家批评.但不要过激哟!我只是一个java新人而已,这样会打击我的....$#^%^& 系统采用SSH2. 整体有文件五个. 1.page.jsp.在需要分页的jsp中用<jsp:include>包含. 2.page.js负责分页的js. 3.page的java类.包括totalRows,pageSize等.就是网上到处可见的page类写法. 如上三个文件中的属性要一致. 4.在ActionSupport中提供preparePage()方法.该方法负责收集jsp传递过来的分页信息,将生成的page对时象入到request的attribute中,供page.jsp使用.并且放到PageUtils类中.endPage()方法,结束分页. 5.PageUtils是该分页的核心所在.但是很简单.他有一个静态变量(TheadLocal类型) 6.修改Spring的源码.在查询之前取出PageUtils的值,如有进行分页,没有则不分页. 整个分页架构完成. 程序员的工作. 1.在JSP中包含page.jsp 2.在Action中,如: preparePage(); List<User> userList = userManager.findAll(); endPage(); List<User> userList1 = userManager.findAll(); userList是分页,而userList1不分页. 其余service,dao不需要关心分页东东.和不分页一样编写代码. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-14
zhxp791008 写道 以前的分页总是Action中获取分页信息.然后在service,dao的方法中传递参数进行分页查询,返回分页的信息.
我上一个项目就是这样.导致service,dao中有大量的page参数.曾经想过用AOP方式进行分页参数的获取.填充.但是分页与不分页混乱,不易控制. 改进了下用AOP的思路.完成此种分页方案.欢迎大家批评.但不要过激哟!我只是一个java新人而已,这样会打击我的....$#^%^& 系统采用SSH2. 整体有文件五个. 1.page.jsp.在需要分页的jsp中用<jsp:include>包含. 2.page.js负责分页的js. 3.page的java类.包括totalRows,pageSize等.就是网上到处可见的page类写法. 如上三个文件中的属性要一致. 4.在ActionSupport中提供preparePage()方法.该方法负责收集jsp传递过来的分页信息,将生成的page对时象入到request的attribute中,供page.jsp使用.并且放到PageUtils类中.endPage()方法,结束分页. 5.PageUtils是该分页的核心所在.但是很简单.他有一个静态变量(TheadLocal类型) 6.修改Spring的源码.在查询之前取出PageUtils的值,如有进行分页,没有则不分页. 整个分页架构完成. 程序员的工作. 1.在JSP中包含page.jsp 2.在Action中,如: preparePage(); List<User> userList = userManager.findAll(); endPage(); List<User> userList1 = userManager.findAll(); userList是分页,而userList1不分页. 其余service,dao不需要关心分页东东.和不分页一样编写代码. 本人QQ号:107607700,欢迎交流 呵呵 ,很好很强大,不过我用 T5 所以我决定看是否能实现你这个分页组件。 但你这个是否可以直接: 2.在Action中,如: preparePage(); List<User> userList = userManager.findAll(); endPage(); 是否可以直接annotation下,更简单,不然总觉得preparePage();和endPage(); 很碍眼。 |
|
返回顶楼 | |
发表时间:2008-04-14
哥们.我对annotation不熟悉.你整下.完成共享下.
|
|
返回顶楼 | |
发表时间:2008-04-14
有那么十来万的记录,估计你一个userManager.findAll();就死翘翘了。
|
|
返回顶楼 | |
发表时间:2008-04-14
mmwy 写道 有那么十来万的记录,估计你一个userManager.findAll();就死翘翘了。
如果是注入的话。。。 应该可以。在dao开始之前之后注入查询代码之中去。。。 |
|
返回顶楼 | |
发表时间:2008-04-14
既然选择java,那就拥抱oo。
为何不定义一个page的model呢?存放page信息。 |
|
返回顶楼 | |
发表时间:2008-04-14
stone说的就是page类
mmwy所说:有那么十来万的记录,估计你一个userManager.findAll();就死翘翘了。 利用分页1亿条.也只是取其中的几十来条而已.就如抛出异常的爱所说: 在DAO执行真正的查询数据之前.利用page类的信息对SQL(HQL等)进组装.改成分页的SQL, 这才是真正执行的SQL. |
|
返回顶楼 | |
发表时间:2008-04-14
没什么意义
|
|
返回顶楼 | |
发表时间:2008-04-14
ssuupv 写道 没什么意义 根据规则翻页。。 可以分离观注点 |
|
返回顶楼 | |
发表时间:2008-04-14
stone 写道 既然选择java,那就拥抱oo。
为何不定义一个page的model呢?存放page信息。 对... 我们所有的分页都都是一个PageResult.然后写个宏.直接在velocity 上面一句话搞定一切. |
|
返回顶楼 | |