分页查询作为一项十分重要的数据库查询技术,在很多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. Asp.Net 之 服务器端控件与客户端控件的区别

    服务器控件,即Asp.Net的控件,控制这些控件必须经过服务器处理,然后响应用户,代码在服务器端解释执行,生成根据用户的浏览器而定的html元素. 客户端控件,即普通Html控件,使用script控制 ...

  2. css笔记04:属性选择器

    1.属性选择器: 带有 title 属性的所有元素设置样式: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

  3. SSIS 学习(9):包部署常见问题汇总【转】

    Integration Services 包在部署过程中,经常会出现这样那样的问题,让人摸不着头脑,很是烦人.下面我就将我在部署过程中,遇到的一些问题整理出来,以供大家参考. (一)SSIS包在SQL ...

  4. python基础语法小笔记

    这几天看着python,然后就记下一些自己觉得需要注意以下的基础语法吧! 如下: for i in range(0,100)表示从0到99,不包括后边界 单引号(')和双引号("" ...

  5. HDU 1978 How many ways (DP)

    How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. [改善Java代码]避免带有变长参数的方法重载

    建议4: 避免带有变长参数的方法重载 在项目和系统的开发中,为了提高方法的灵活度和可复用性,我们经常要传递不确定数量的参数到方法中,在Java 5之前常用的设计技巧就是把形参定义成Collection ...

  7. AjaxForm

    近乎的Ajax控件介绍,代码下载:http://www.jinhusns.com/Products/Download?type=whp AjaxForm 概述 功能说明 基于 ajaxForm 插件进 ...

  8. JQuery Mobile页面加载处理

    在弄移动Web时采用了JQueryMobile框架. 奇怪的是 在使用页面加载 时 事件无效 我尝试了两种方法: $(document).ready(function(){ //do events } ...

  9. sqlserver 测试sql语句执行时间

    查看sql语句执行时间/测试sql语句性能 写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置S ...

  10. ios swift reduce Method

    Swift’s API includes many functions and instance methods that reflect its functional programming her ...