分页查询作为一项十分重要的数据库查询技术,在很多web项目中都会要用到,当然移动开发中也是会涉及的。

一、分页查询的sql语句:

  ps:为了方便阐述,下面统一使用student表作为查询的表;colName表示student表中的某个字段名字。

  1、mysql

  select * from student (order by colName) limit m, n;

    参数解释  m:表示要查询记录的上一行的行号,比如要从第1条记录开始查则m取0;

           n:表示希望从m+1开始查询多少条记录;

   示例:

  studet表中的数据如下

  

  

  

  

  2、oracle

  select * from (select t.*,rownum rn from (select * from student) t where rownum<=m) where rn>=n;

  参数解释  rownum:是oracle系统为查询返回的行顺序分配的编号,详细介绍请参考该博文:http://www.cnblogs.com/zjrstar/archive/2006/08/31/491090.html

        m:查询的最大行号;

          n:查询的最小行号;

        这样查询的结果行数为:m-n+1

  示例:

  student表中的数据如下:

  

  

  3、sql server

  实现的sql语法有多种:

    ①利用ID大于多少

    select top 4 * from student where stuid>( select max(stuid) from ( select top 2 stuid from student order by stuid ) as t ) order by stuid;

    ②利用not in

    select top 4 * from student where stuid not in ( select top 2 stuid from student order by stuid) as t order by stuid;

    ③利用颠倒型top

    select * from ( select top 4 * from ( select top 6 * from student order by stuid )  as t order by t.stuid desc ) as t1 order by t1.stuid;

    ④使用ROW_NUMBER()函数

    select * from ( select *,row_number() over (order by stuid) as rank from student ) as t where t.rank between 3 and 6;

  由于没怎么用sql server,所以电脑上没装,这里就不给出查询示例了。

二、jdbc中如何实现动态分页

  1、四个重要参数

    pageNow  当前的页码

    pageCount 总页数

    pageSize  每页中显示多少条记录

    rowCount   表中记录的总行数

  2、根据rowCount和pageSize计算pageCount的小算法

    ①  if(rowCount % pageSize == 0) {

          pageCount = rowCount / pageSize;

       } else {

          pageCount = rowCount / pageSize + 1;

       }

    ②  pageCount = rowCount % pageSize == 0 ? rowCount / pageSize : rowCount / pageSize  + 1;

    ③  pageCount = (rowCount - 1) / pageSize + 1;

    原理是一样的,只是给出了三种形式,个人比较喜欢③。

  3、将pageSize和pageNow用在jdbc的sql语句中查询当前页的记录

    ⑴mysql

    select * from student (order by colName) limit (pageNow-1)*pageSize, pageSize;

    ⑵oracel

    select * from (select t.*,rownum rn from (select * from student) t where rownum<=pageNow*pageSize) where rn>=(pageNow-1)*pageSize+1;

    ⑶sql server

    select top pageSize * from student where stuid>( select max(stuid) from ( select top (pageNow-1)*pageSize stuid from student order by stuid ) as t ) order by stuid;

    sql server分页查询语句中,这条语句的效率较高,其他的几种查询形式这里就不讨论了。

jdbc之分页查询的更多相关文章

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

    分页查询 通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这里介绍两种非常典型的分页方法. 通过ResultSet的光标实现分页 通过ResultSet的光标实现 ...

  2. 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

             分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...

  3. JDBC使用游标实现分页查询的方法

    本文实例讲述了JDBC使用游标实现分页查询的方法.分享给大家供大家参考,具体如下: /** * 一次只从数据库中查询最大maxCount条记录 * @param sql 传入的sql语句 * @par ...

  4. JDBC分页查询及实现

    当数据过多时,一页之内是无法显示的,因此需要进行分页显示. (一)分页技术实现: 物理分页: - 在数据库执行查询时(实现分页查询),查询需要的数据--依赖数据库的SQL语句 - 在sql查询时,从数 ...

  5. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  6. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  7. Java GUI+mysql+分页查询

    1.要求 : 创建一个学生信息管理数据库 2.实现分页查询 代码如下: a)学生实体类: /** * @author: Annie * @date:2016年6月23日 * @description: ...

  8. 基于Mysql数据库的SSM分页查询

    前言: Hello,本Y又来了,"分页"在我们使用软件的过程中是一个很常见的场景,比如博客园对于每个博主的博客都进行了分页展示.可以简单清晰的展示数据,防止一下子将过多的数据展现给 ...

  9. java使用插件pagehelper在mybatis中实现分页查询

    摘要: com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件 PageHelper是国内牛人的一个开源项目,有兴趣的可以去看源码,都有 ...

随机推荐

  1. Understanding Spring Web Application Architecture: The Classic Way--转载

    原文地址:http://www.petrikainulainen.net/software-development/design/understanding-spring-web-applicatio ...

  2. Eclipse对printf()不能输出到控制台的解决方法

    方案1: 在main 语句中加一条 setbuf(stdout,NULL); 这个即可. 在ecplise下使用cdt开发c程序,发现运行后终端没有输出,停止后会输出,通过在main中添加 setbu ...

  3. 各种电子面单_Api接口

    电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务.通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍.电子面单以接口形式嵌入到自己的系统.网站上,可以在自己的平台操作打印电子面单.   ...

  4. C语言第一节 C语言程序与开发工具

    开发工具的选择 可以用来写代码的工具:记事本.UltraEdit.Vim.Xcode等 选择Xcode的原因:苹果官方提供的开发利器.简化开发过程.有高亮显示功能 使用Xcode新建一个C程序的源代码 ...

  5. 引用自定义的framework

    关于静态库引用文件 如果希望你的工程能在未来能导出成静态库,那么在你编写的时候要遵循静态库引用原则,使用这种方式. 注意:这种引用方式必须在你的Products下静态库成黑色时候,才能编译通过. 使用 ...

  6. hadoop学习记录(一)HDFS

    hadoop的灵感源于谷歌,最初目的是解决传统数据库处理数据成本高和速度慢的问题. hadoop两个核心项目是HDFS(hadoop分布式文件系统)和MapReduce. HDFS用来实现数据的存储, ...

  7. python(3)-内置函数2

    frozenset()    定义一个不能添加修改的集合 >>> s = frozenset() >>> s.add("aaa") Traceb ...

  8. 转: OpenResty最佳实践

    https://moonbingbing.gitbooks.io/openresty-best-practices/content/ centOS安装另加内容 ln -sf luajit-2.1.0- ...

  9. contentProvider-联系人的CURD

    1.联系人的查找 返回一个ArrayList<HashMap<String,  String>>类型 //通过管理联系人的URI获取游标对象 Cursor cursor= ge ...

  10. Android布局属性全面剖析

    第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:la ...