ET Limit方式的分页查询
来源:互联网 发布:皮衣品牌 知乎 编辑:程序博客网 时间:2024/06/11 01:55
1.Limit
默认的情况下eXtremeTable取得所有的结果集然后处理Beans集合,这样的好处是 你可以随意进行排序、过滤和分页操作。
你只需要组装Beans集合并让eXtremeTable知道如何 然而在查询结果较大,可以考虑使用数据库端分页的方案。此时,eXtremeTable
会使用Limit对象向Action/Controller传递PageNo,PageSize,OrderBy等分页信息。而服务端将向EC返回总记录数和当前页的内容。
2.创建Limit
首先你需要通过LimitFactory得到一个Limit实例:
代码
- Context context = new HttpServletRequestContext(request);
- LimitFactory limitFactory = new TableLimitFactory(context);
- Limit limit = new TableLimit(limitFactory);
Limit对象定义了limit结果集的所有方法。
TableLimitFactory具有另外一个构造函数,如果JSP页面使用了两个(以上)eXtremeTable的话你可以利用tableId分别传输totalRows,如果默认tableId将为所有ec,。
Context context = new HttpServletRequestContext(request);
LimitFactory limitFactory = new TableLimitFactory(context, tableId);
Limit limit = new TableLimit(limitFactory);
设置行属性:
limit.setRowAttributes(totalRows, DEFAULT_ROWS_DISPLAYED);
3. 前台jsp页面中ec标莶写法:
代码
- <ec:table
- items="userlist"
- var="u"
- action="/pageAction.do"
- title="后台用户管理——管理用户"
- retrieveRowsCallback="limit"
- width="80%"
- rowsDisplayed="3"
- form=""
- >
- <ec:row>
- ...
- ...
- </ec:row>
- </ec:table>
使用callback需要做的唯一事情是传输集合到request,同时传输totalRows属性。 totalRows表示总行数,
代码
- request.setAttribute("userlist", userlist);
- request.setAttribute("totalRows", new Integer(总记录数));
4.实例:
本实例是ec结合Struts和Hibernate进行分页.
PageAction中的部分代码:
代码
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- UserDAO userDAO = (UserDAO) getBean("userDAO");
- Limit limit = ExtremeTablePage.getLimit(request,defaultPageSize);
- PageBean page = new PageBean();
- page.setPageSize(limit.getCurrentRowsDisplayed()); //ec通过limit对象传递pageSize给PageBean
- page.setPage(limit.getPage());//ec通过limit对象传递pageNo给PageBean
- List list = userDAO.findAllUser(page);
- request.setAttribute("userlist", list);
- request.setAttribute("totalRows", new Integer(page.getCount()));
- return mapping.findForward("userlist");
- }
Limit对象的实例化在ExtremeTablePage中
代码
- static public Limit getLimit(HttpServletRequest request,int defaultPageSize) {
- Context context = new HttpServletRequestContext(request);
- LimitFactory limitFactory = new TableLimitFactory(context);
- TableLimit limit = new TableLimit(limitFactory);
- limit.setRowAttributes(Integer.MAX_VALUE, defaultPageSize);
- return limit;
- }
PageBean类部分代码:
代码
- public class PageBean {
- private int count = 0; // 记录总数
- private int pageSize = 10; // 每页显示记录数
- private int pageCount = 0; // 总页数
- private int page = 1; // 当前页数
- .
- .
- .
- public int getCount() {
- return count;
- }
- public void setCount(int count) {
- if (pageSize != 0) {
- pageCount = count / pageSize;
- if (count % pageSize != 0) {
- pageCount++;
- }
- }
- this.count = count;
- }
- public int getPage() {
- return page;
- }
- public void setPage(int page) {
- this.page = page;
- }
- public int getPageCount() {
- return pageCount;
- }
- public void setPageCount(int pageCount) {
- this.pageCount = pageCount;
- }
- public int getPageSize() {
- return pageSize;
- }
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
- .
- .
- .
- }
- ET Limit方式的分页查询
- mybatis 分页查询 limit
- MSSQL 实现 MySQL 的 limit 查询方式
- sqllite limit offset 分页查询
- mysql limit分页查询效率
- mysql limit 分页查询优化
- mysql 中LIMIT 分页查询
- MySQL中的limit(分页查询)
- JDBC实例-分页查询-limit
- MySQL分页查询,关键字(limit)
- MySQL limit 分页查询数据库
- MySQL数据分页查询---limit、order by的使用
- 分表分页时查询用到的limit
- TP5 分页 如果查询传递过的page分页数和limit行数
- mysql使用limit来实现分页查询
- mysql limit分页查询优化写法
- MySQL_数据分页查询(limit用法)
- jsp servlet mysql(limit)分页查询
- 黑马程序员-java基础学习02-基本知识
- zoj题目选
- scrollTop
- fibnacci序列
- JDBC(Java数据库连接技术)
- ET Limit方式的分页查询
- 免费的CAE资源
- 堆栈内存的解释
- Linux服务器中的TCP连接状态详细解释
- Fibancci序列
- JAVA面试汇总
- Java程序设计(十五)----用户在对话框下拉列表中选择的为显示文本区中的文本
- cocos2d-x解决屏幕适应问题
- NFS环境的设置出错(坑爹的小问题)