Java分页查询

[java] view plain copy

  1. /**
  2. * 分页查询
  3. * @param pageNo 第几页
  4. * @param pageSize 每页多少条数据
  5. * @return pageModel
  6. */
  7. public PageModel findUserList(int pageNo, int pageSize) {
  8. StringBuffer sbSql = new StringBuffer();
  9. sbSql.append("select user_id, user_name, password, contact_tel, email, create_date ")
  10. .append("from ")
  11. .append("( ")
  12. .append("select rownum rn, user_id, user_name, password, contact_tel, email, create_date ")
  13. .append("from ")
  14. .append("( ")
  15. .append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id <> ‘root‘ order by user_id ")
  16. .append(")  where rownum <= ? ")
  17. .append(")  where rn > ? ");
  18. Connection conn = null;
  19. PreparedStatement pstmt = null;
  20. ResultSet rs = null;
  21. PageModel pageModel = null;
  22. try {
  23. conn = DbUtil.getConnection();
  24. pstmt = conn.prepareStatement(sbSql.toString());
  25. pstmt.setInt(1, pageNo * pageSize);
  26. pstmt.setInt(2, (pageNo - 1) * pageSize);
  27. rs = pstmt.executeQuery();
  28. List userList = new ArrayList();
  29. while (rs.next()) {
  30. User user = new User();
  31. user.setUserId(rs.getString("user_id"));
  32. user.setUserName(rs.getString("user_name"));
  33. user.setPassword(rs.getString("password"));
  34. user.setContactTel(rs.getString("contact_tel"));
  35. user.setEmail(rs.getString("email"));
  36. user.setCreateDate(rs.getTimestamp("create_date"));
  37. userList.add(user);
  38. }
  39. pageModel = new PageModel();
  40. pageModel.setList(userList);
  41. pageModel.setTotalRecords(getTotalRecords(conn));
  42. pageModel.setPageSize(pageSize);
  43. pageModel.setPageNo(pageNo);
  44. }catch(SQLException e) {
  45. e.printStackTrace();
  46. }finally {
  47. DbUtil.close(rs);
  48. DbUtil.close(pstmt);
  49. DbUtil.close(conn);
  50. }
  51. return pageModel;
  52. }
  53. /**
  54. * 取得总记录数
  55. * @param conn
  56. * @return
  57. */
  58. private int getTotalRecords(Connection conn)
  59. throws SQLException {
  60. String sql = "select count(*) from t_user where user_id <> ‘root‘";
  61. PreparedStatement pstmt = null;
  62. ResultSet rs = null;
  63. int count = 0;
  64. try {
  65. pstmt = conn.prepareStatement(sql);
  66. rs = pstmt.executeQuery();
  67. rs.next();
  68. count = rs.getInt(1);
  69. }finally {
  70. DbUtil.close(rs);
  71. DbUtil.close(pstmt);
  72. }
  73. return count;
  74. }

基本思路就是通过rownum控制查询的记录,想要了解更多关于rownum的信息请用力戳解析oracle的rownum

下面是一个分页信息的实体类,将分页信息封装了一下:

[java] view plain copy

  1. import java.util.List;
  2. /**
  3. * 封装分页信息
  4. * @author Administrator
  5. *
  6. */
  7. public class PageModel {
  8. //结果集
  9. private List list;
  10. //查询记录数
  11. private int totalRecords;
  12. //每页多少条数据
  13. private int pageSize;
  14. //第几页
  15. private int pageNo;
  16. /**
  17. * 总页数
  18. * @return
  19. */
  20. public int getTotalPages() {
  21. return (totalRecords + pageSize - 1) / pageSize;
  22. }
  23. /**
  24. * 取得首页
  25. * @return
  26. */
  27. public int getTopPageNo() {
  28. return 1;
  29. }
  30. /**
  31. * 上一页
  32. * @return
  33. */
  34. public int getPreviousPageNo() {
  35. if (pageNo <= 1) {
  36. return 1;
  37. }
  38. return pageNo - 1;
  39. }
  40. /**
  41. * 下一页
  42. * @return
  43. */
  44. public int getNextPageNo() {
  45. if (pageNo >= getBottomPageNo()) {
  46. return getBottomPageNo();
  47. }
  48. return pageNo + 1;
  49. }
  50. /**
  51. * 取得尾页
  52. * @return
  53. */
  54. public int getBottomPageNo() {
  55. return getTotalPages();
  56. }
  57. public List getList() {
  58. return list;
  59. }
  60. public void setList(List list) {
  61. this.list = list;
  62. }
  63. public int getTotalRecords() {
  64. return totalRecords;
  65. }
  66. public void setTotalRecords(int totalRecords) {
  67. this.totalRecords = totalRecords;
  68. }
  69. public int getPageSize() {
  70. return pageSize;
  71. }
  72. public void setPageSize(int pageSize) {
  73. this.pageSize = pageSize;
  74. }
  75. public int getPageNo() {
  76. return pageNo;
  77. }
  78. public void setPageNo(int pageNo) {
  79. this.pageNo = pageNo;
  80. }
  81. }

原文地址:https://www.cnblogs.com/heartwarming/p/10372688.html

时间: 2024-11-11 08:09:58

Java分页查询的相关文章

Java分页查询--分页显示

当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库sql语句的limit条件实现分组查询sql语句大概形式为: select * from table limit 开始索引,显示条数 用该语句就会实现分块查询,并且每页显示固定条数.首先要实现后台分页,我们需要知道它有多少页,每页有多少行,这就需要知道一共多少行,调用sql语句时还需要知道每一页的开始索引,开始索引是根据当前页数算出来的,所以还需要知道当前页数,查询后会返回一个列表存储当前页数据.将这些属性及获

JAVA分页查询插件

//页面结果插件import java.util.List; public class PageResult<T> { /** * 结果集 */ private List<T> list; /** * 页面信息 */ private PageVO page; public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } pub

Java分页查询工具类

public class PageList<T> { private int totalpage; //总页数 private int totalcount; //总记录数 private int currentpage; //当前页 private int pagesize; //每页的数量 private int firstpage; //第一页 private int lastpage; //最后一页 private int prepage; //上一页 private int next

Java链接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash

准备工作 1.创建Java的Maven项目 创建好的目录结构如下:  另外注意junit的版本,最好不要太高,最开始笔者使用的junit4.12的,发现运行的时候会报错.最后把Junit的版本改成4.7的之后,问题解决了. 创建测试工具类HbaseDemo,为了保证能够让Hbase运行,需要最开始写出如下配置: package toto.com.hbase; import java.util.ArrayList; import java.util.Iterator; import org.apa

[原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

JDBC在Java Web中的应用——分页查询

分页查询 通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这里介绍两种非常典型的分页方法. 通过ResultSet的光标实现分页 通过ResultSet的光标实现分页,优点是在各种数据库上通用,缺点是占用大量资源,不适合数据量大的情况. 2. 通过数据库机制进行分页 很多数据库自身都提供了分页机制,如SQL Server中提供的top关键字,MySQL数据库中提供的limit关键字,它们都可以设置数据返回的记录数. 通过各种数据库的分页机制实现分页查询,其优

详述 DB2 分页查询及 Java 实现

DB2 startNum:起始数 endNum:结尾数 SQL 语句? SELECT * FROM ( SELECT B.*, ROWNUMBER() OVER() AS TN FROM ( SELECT * FROM 表名 ) AS B ) AS A WHERE A.TN BETWEEN startNum AND endNum; 1 2 3 4 5 6 7 8 如上所示,此即为 DB2 的分页查询语句. Mapper <?xml version="1.0" encoding=&

Java技术积累——用最原始的代码见证分页查询实现原理

关于分页查询,大家并不陌生,easyui中封装的datagrid将表格的一系列操作运用的淋漓尽致,分页查询便是其中之一.然而,我们却疏于了解分页查询的基本实现原理,它究竟是如何实现的,今天就带大家一起来探个究竟! 看一下界面的实现效果: 看似很复杂的事情,其实实现它最核心的东西有两个: 一.实现分页查询的SQL语句 select user_id,user_name,password,contact_Tel,email,create_date from( select rownum rn,user

Mybatis封装分页查询的java公用类

分页----对于数据量很大的查询中,是必不可少的.mybatis底层的分页sql语句由于需要我们自己去手动写.而实现分页显示的时候我们需要根据分页查询条件查询符合条件的总记录数和记录的详细情况.因此,若是不去实现封装一下的话,我们需要写两条SQL语句去实现它.一次用于查询记录数目.一次用于查询分页显示的详细记录.当项目中碰到很多需要分页的时候,我们便对于每一个Mapper.xml文件都需要去写两条SQL语句.极其麻烦,代码重用----必须重用.所以,一个公共方法的分页需求应运而生. 直接上分页公