MySQL数据库+jsp+servlet实现分页查询
2015-12-23 22:03
519 查看
前一段做的那个jsp+servlet的小项目用到了分页查询,老师讲了之后实现到了网页上面,今天总结到博客上面,以后忘记了自己可以看,也分享给大家.
这个项目使用的数据库是MySQL,在MySQL数据库中使用
就可以达到分段查询的目的,pageNo是页码数,pageSize是每页的容量,如果pageNo=1,pageSize=5的话,那就是取前五条数据,那第二页就是取出5-10条数据,依次类推.
在这个项目的util包中加入了一个pageUtil的工具类,这个类主要是封装每页显示的数据,比如pageNo(当前页码),pageSize(每页要显示的数据条数),totalCount,(总记录的条数),data(当前页的数据集合),totalPage(总页数),这个类中的代码如下:
之后在dao类的实现类中使用prepareStatement的executeQuery()方法查询出每条数据的属性值,并将其赋给bean类中写好的实体类的属性中,然后将实体类的对象放在一个list中,再将这个list给pageUtil类的data集合.
dao的实现类中有关分页的代码:
然后在servlet中使用request.getParameter(“pageNo”)来获取到当前的页码数,接下来的代码:
设置每页显示的数据条数,然后page对象传递给jsp,在jsp中使用foreach循环:
这样把page对象传递过来之后就可以调用pageUtil类中的属性了.这样分页基本就做完了,当然,如果想做的更好看点,还可以使用pagination之类的插件.
这个项目使用的数据库是MySQL,在MySQL数据库中使用
select user_id,username from user limit (pageNo-1)*pageSize,pageSize
就可以达到分段查询的目的,pageNo是页码数,pageSize是每页的容量,如果pageNo=1,pageSize=5的话,那就是取前五条数据,那第二页就是取出5-10条数据,依次类推.
在这个项目的util包中加入了一个pageUtil的工具类,这个类主要是封装每页显示的数据,比如pageNo(当前页码),pageSize(每页要显示的数据条数),totalCount,(总记录的条数),data(当前页的数据集合),totalPage(总页数),这个类中的代码如下:
package com.team5.util; import java.util.List; import com.team5.hurui.bean.Dope; /** * 分页工具类(封装每页需要显示的数据) * * @author * */ public class PageUtil { // 当前页页码(1,2,3....) private int pageNo; // 每页显示条数 private int pageSize; // 总记录(条数) private int totalCount; // 当前页数据集合 private List data; // 总页数 private int totalPage; /** * 构造方法,传递每页条数和总记录数 * * @param 每页显示条数 * @param 总记录数 */ public PageUtil(int pageSize, int totalCount) { this.pageSize = pageSize; this.totalCount = totalCount; if (this.totalCount % this.pageSize == 0) { // 计算总页数 this.totalPage = this.totalCount / this.pageSize; } else { this.totalPage = this.totalCount / this.pageSize + 1; } } public List getData() { return data; } public void setData(List data) { this.data = data; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } public int getPageSize() { return pageSize; } public int getTotalCount() { return totalCount; } public int getTotalPage() { return totalPage; } }
之后在dao类的实现类中使用prepareStatement的executeQuery()方法查询出每条数据的属性值,并将其赋给bean类中写好的实体类的属性中,然后将实体类的对象放在一个list中,再将这个list给pageUtil类的data集合.
dao的实现类中有关分页的代码:
//根据页码和每页的容量来得到数据 @Override public PageUtil getPage(int pageNo, int pageSize) { Connection conn = DBManager.getConnection(); PreparedStatement ps = null; ResultSet rs = null; List<User> list = new ArrayList<User>(); PageUtil page = null; try { //获取总数据条数 int totalCount = 0; ps = conn.prepareStatement("select count(user_id) from user"); rs = ps.executeQuery(); while(rs.next()){ totalCount = rs.getInt(1); } ps = conn.prepareStatement("select user_id,username from user limit " + (pageNo-1)*pageSize+","+pageSize); rs = ps.executeQuery(); while(rs.next()){ User user = new User(); user.setUser_id(rs.getInt(1)); user.setUsername(rs.getString(2)); list.add(user); } page = new PageUtil(pageSize, totalCount); page.setData(list); } catch (SQLException e) { e.printStackTrace(); }finally{ DBManager.closeAll(rs, ps, conn); } return page; }
然后在servlet中使用request.getParameter(“pageNo”)来获取到当前的页码数,接下来的代码:
//设置每页显示十条数据 PageUtil page = usi.getPage(pageNo, 10); page.setPageNo(pageNo); request.setAttribute("page", page); request.getRequestDispatcher("admin/showUserList.jsp").forward(request, response);
设置每页显示的数据条数,然后page对象传递给jsp,在jsp中使用foreach循环:
<c:forEach var="list" items="${page.data}"> <tr> <td align="center" class="altbg2"><input name="item" type="checkbox" id="item" value="${list.user_id}" ></td> <td align="center" class="altbg2"> ${list.username} </td> <td class="altbg2" align="center"> ${list.user_id} </td> <td class="altbg2" align="center"> </td> </tr> </c:forEach> <tr><td class="altbg2" colspan="7" rowspan="2" align="right"> 总共【${page.totalPage}】页 ${page.pageNo}/${page.totalPage} <a href="zcUserServlet?method=showPage&pageNo=1">首页</a> <c:choose> <c:when test="${requestScope.page.pageNo > 1}"> <a href="zcUserServlet?method=showPage&pageNo=${page.pageNo-1}">上一页</a> </c:when> <c:otherwise> 上一页 </c:otherwise> </c:choose> <c:choose> <c:when test="${page.pageNo < page.totalPage}"> <a href="zcUserServlet?method=showPage&pageNo=${page.pageNo+1}">下一页</a> </c:when> <c:otherwise> 下一页 </c:otherwise> </c:choose> <a href="zcUserServlet?method=showPage&pageNo=${page.totalPage}">尾页</a> </td> </tr>
这样把page对象传递过来之后就可以调用pageUtil类中的属性了.这样分页基本就做完了,当然,如果想做的更好看点,还可以使用pagination之类的插件.
相关文章推荐
- ubuntu14.04安装mysqlserver数据库
- mysql kill thread
- MySql(开源地址)
- mysql索引优化的总结
- mysql select语句执行顺序
- mysql创建用户---命令小结
- MySQL 5.6 & 5.7最优配置文件模板
- mysql修改表、字段、库的字符集
- Mysql 实现 三目运算判断
- MySQL之权限管理
- MySQL5.7.10配置和使用
- MYSQL ERROR CODE 错误编号的意义
- MySQL主从配置
- MySQL 5.6.19主从server-id不生效,The server is not configured as slave
- mysql 1067 进程意外终止
- MySQL主从复制
- 【转】MySQLroot用户忘记密码解决方案(安全模式,修改密码的三种方式)
- MySQL服务器性能优化
- MySQL服务器性能优化
- MySQL服务器性能优化