SQL分页

简介:

1、oracle的分页

PageMode类:

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

Oracle分页,SQL语句3层嵌套,Mysql则使用limit完成,更加的方便

 
  1. select * from  
  2.        ( 
  3.           select rownum rn, t.* from  
  4.            ( 
  5.                select * from t_user where user_id<>'root' order by user_id  
  6.            ) t where rownum <=? 
  7.        ) where rn>?;  

具体分页方法:

 
  1. /** 
  2.  * 分页查询 
  3.  * @param pageNo 
  4.  * @param pageSize 
  5.  * @return 
  6.  */ 
  7. public PageModel findAllUser(int pageNo, int pageSize) { 
  8.     StringBuffer sbSql = new StringBuffer(); 
  9.     sbSql.append("select * from "
  10.         .append("("
  11.             .append("select rownum rn, t.* from "
  12.             .append("("
  13.                 .append("select * from t_user where user_id<>'root' order by user_id "
  14.                 .append(") t where rownum <=?"
  15.         .append(") where rn>?"); 
  16.     Connection conn = null
  17.     PreparedStatement pstmt = null
  18.     ResultSet rs = null
  19.     PageModel pageModel = null
  20.     try { 
  21.         conn = DB.getConnection(); 
  22.         pstmt = conn.prepareStatement(sbSql.toString()); 
  23.         pstmt.setInt(1, pageNo * pageSize); 
  24.         pstmt.setInt(2, (pageNo -1)*pageSize); 
  25.         rs = pstmt.executeQuery(); 
  26.         List userList = new ArrayList(); 
  27.         while (rs.next()) { 
  28.             User user = new User(); 
  29.             user.setUserId(rs.getString("user_id")); 
  30.             user.setUserName(rs.getString("user_name")); 
  31.             user.setPassword(rs.getString("password")); 
  32.             user.setContactTel(rs.getString("contact_tel")); 
  33.             user.setEmail(rs.getString("email")); 
  34.             user.setCreateDate(rs.getTimestamp("create_date")); 
  35.             userList.add(user); 
  36.         } 
  37.         pageModel = new PageModel(); 
  38.         pageModel.setPageSize(pageSize); 
  39.         pageModel.setPageNo(pageNo); 
  40.         pageModel.setList(userList); 
  41.         pageModel.setTotalRecords(getTotalRecords(conn)); 
  42.     }catch(SQLException e) { 
  43.         e.printStackTrace(); 
  44.     }finally { 
  45.         DB.close(rs); 
  46.         DB.close(pstmt); 
  47.         DB.close(conn); 
  48.     }  
  49.     return pageModel; 

 


本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/678353,如需转载请自行联系原作者

相关文章
|
SQL Java 数据库连接
Mybatis-动态sql和分页
Mybatis-动态sql和分页
153 0
|
SQL XML Java
【MyBatis】动态SQL和mybatis分页的运用
如果我们的前台没有传参,比如没有传入我们的name值,name就会把字段值改为null,这就违背了我们编码的初衷。许多人会使用类似于where 1 = 1来作为前缀,在代码中会用if,再用and进行一个sql拼接。
|
3月前
|
SQL 关系型数据库 MySQL
SQL中如何实现分页?
【8月更文挑战第3天】SQL中如何实现分页?
97 36
|
5月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
java202304java学习笔记第六十六天-ssm-动态sql-plugins分页数据关联实现
java202304java学习笔记第六十六天-ssm-动态sql-plugins分页数据关联实现
41 0
|
6月前
|
SQL 人工智能 运维
数据库基础入门 — SQL排序与分页
数据库基础入门 — SQL排序与分页
50 0
|
11月前
|
SQL Java 数据库连接
动态sql和分页下(mybatis的分页及特殊字符)
动态sql和分页下(mybatis的分页及特殊字符)
52 0
|
11月前
|
SQL Java 数据库连接
动态sql和分页上
动态sql和分页上
47 0
|
12月前
|
SQL Java 数据库连接
Mybatis映射.动态sql.分页
Mybatis映射.动态sql.分页
42 0
|
12月前
|
SQL 前端开发 Java
Mybatis的动态SQL分页及特殊字符应用
Mybatis的动态SQL分页及特殊字符应用
50 0