java+jsp实现分页查询
2015-09-25 21:09
537 查看
之前没有用java实现过分页查询,觉得分页查询很难,但是现在理解了之后,发现其实很简单,下***体来介绍下怎么实现分页查询!
这里的UserManager类相当于经典三层中的D层,主要是作用是对数据库的操作:
为了方便,写了一个存放所查询数来的数据的类,便于操作:
这里介绍的过程中显示了部分代码,也是分页查询的一种方法,其实原理很简单,大家可以试一试!
原理:
做分页查询将其在界面显示,其实原理很简单,就是用sql语句将数据库中的数据查询出来,然后显示在界面上,查询的时候将页号,每页显示的数据总量,具体显示的数据都查询出来,下面看下源码:这里的UserManager类相当于经典三层中的D层,主要是作用是对数据库的操作:
<span style="font-size:14px;"> /** * 分页查询 * @param pageNo 第几页 * @param pageSize 每页多少条数据 * @return pageModel */ public PageModel<User> findUserList(int pageNo, int pageSize) { StringBuffer sbSql = new StringBuffer(); sbSql.append("select user_id, user_name, password, contact_tel, email, create_date ") .append("from ") .append("( ") .append("select rownum rn, user_id, user_name, password, contact_tel, email, create_date ") .append("from ") .append("( ") .append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id <> 'root' order by user_id ") .append(") where rownum <= ? ") .append(") where rn > ? "); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; PageModel<User> pageModel = null; try { conn = DbUtil.getConnection(); pstmt = conn.prepareStatement(sbSql.toString()); pstmt.setInt(1, pageNo * pageSize); pstmt.setInt(2, (pageNo - 1) * pageSize); rs = pstmt.executeQuery(); List<User> userList = new ArrayList<User>(); while (rs.next()) { User user = new User(); user.setUserId(rs.getString("user_id")); user.setUserName(rs.getString("user_name")); user.setPassword(rs.getString("password")); user.setContactTel(rs.getString("contact_tel")); user.setEmail(rs.getString("email")); user.setCreateDate(rs.getTimestamp("create_date")); userList.add(user); } pageModel = new PageModel<User>(); pageModel.setList(userList); pageModel.setTotalRecords(getTotalRecords(conn)); pageModel.setPageSize(pageSize); pageModel.setPageNo(pageNo); }catch(SQLException e) { e.printStackTrace(); }finally { DbUtil.close(rs); DbUtil.close(pstmt); DbUtil.close(conn); } return pageModel; }</span>
为了方便,写了一个存放所查询数来的数据的类,便于操作:
<span style="font-size:14px;">package com.bjpowernode.drp.util; import java.util.List; import oracle.net.aso.e; /** * 封装分页信息 * @author Administrator * */ public class PageModel<e> { //结果集 private List<e> list; //查询记录数 private int totalRecords; //每页多少条数据 private int pageSize; //第几页 private int pageNo; /** * 总页数 * @return */ public int getTotalPages() { return (totalRecords + pageSize - 1) / pageSize; } /** * 取得首页 * @return */ public int getTopPageNo() { return 1; } /** * 上一页 * @return */ public int getPreviousPageNo() { if (pageNo <= 1) { return 1; } return pageNo - 1; } /** * 下一页 * @return */ public int getNextPageNo() { if (pageNo >= getBottomPageNo()) { return getBottomPageNo(); } return pageNo + 1; } /** * 取得尾页 * @return */ public int getBottomPageNo() { return getTotalPages(); } public List getList() { return list; } public void setList(List list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } } </span>最后就是在界面显示啦,注意看其中的代码:
<span style="font-size:14px;"><% int pageNo = 1; int pageSize = 2; String pageNoString = request.getParameter("pageNo"); if (pageNoString != null) { pageNo = Integer.parseInt(pageNoString); } PageModel<User> pageModel = UserManager.getInstance().findUserList(pageNo, pageSize); %> </span>
<span style="font-size:14px;">function checkAll(field) { var selectFlags = document.getElementsByName("selectFlag"); for (var i=0; i<selectFlags.length; i++) { selectFlags[i].checked = field.checked; } } function topPage() { window.self.location = "user_maint.jsp?pageNo=<%=pageModel.getTopPageNo()%>"; } function previousPage() { window.self.location = "user_maint.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>"; } function nextPage() { window.self.location = "user_maint.jsp?pageNo=<%=pageModel.getNextPageNo()%>"; } function bottomPage() { window.self.location = "user_maint.jsp?pageNo=<%=pageModel.getBottomPageNo()%>"; } </span>
这里介绍的过程中显示了部分代码,也是分页查询的一种方法,其实原理很简单,大家可以试一试!
相关文章推荐
- 输入年月日输出该日期是当年的第几天的java代码
- Java Web开发实战经典 实战练习2.5
- test7.17
- test7.16
- Java 反射机制
- strutsmvc ajaxForm提交表单ie出现json文件下载问题解决
- Spring MVC 解读——<mvc:annotation-driven/>
- 大数 N!——java
- 如何用Netbeans加背景图片
- Thinking In Java读书笔记--对象导论
- java Scanner类的几点注意事项
- Java核心技术第3章(2)
- 【Java高级】Java中NIO非阻塞socket通信
- Spring事务处理时自我调用的解决方案及一些实现方式的风险
- java程序——从命令行接收多个数字,求和之后输出结果
- java设计界面与按钮之间的连接方法
- java Timer和TimerTask使用
- test7.15
- java构造函数
- Java中随机数生成的两种方法,以及math的floor