Java分页查询

Posted 倾我一生一世

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.  * 取得总记录数 
  56.  * @param conn 
  57.  * @return 
  58.  */  
  59. private int getTotalRecords(Connection conn)   
  60. throws SQLException {  
  61.     String sql = "select count(*) from t_user where user_id <> \'root\'";  
  62.     PreparedStatement pstmt = null;  
  63.     ResultSet rs = null;  
  64.     int count = 0;  
  65.     try {  
  66.         pstmt = conn.prepareStatement(sql);  
  67.         rs = pstmt.executeQuery();  
  68.         rs.next();  
  69.         count = rs.getInt(1);  
  70.     }finally {  
  71.         DbUtil.close(rs);  
  72.         DbUtil.close(pstmt);  
  73.     }  
  74.     return count;  
  75. }  

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

 

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

[java] view plain copy

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

 

以上是关于Java分页查询的主要内容,如果未能解决你的问题,请参考以下文章

java分页查询

java分页

Java如何根据条件查询相应的数据并分页

JAVA-分页查询

Java分页查询--分页显示

java mybatis 分页模糊查询页面怎么写