zoukankan      html  css  js  c++  java
  • 数据库分页查询

    mysql分页查询: 

    是用limit函数

    取前5条数据:select * from table_name limit 0,5  //表示从下标为0位置,开始数5条数据。

    或者select * from table_name limit 5,默认从0开始计数

    查询第11到第15条数据

    select * from table_name limit 10,5

    limit关键字的用法:

    LIMIT [offset,] rows

    offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

     

    例子:写一个分页查询的sql,要求实现:从start位置开始,数limit条数据。接下来我们只需计算出start、limit的坐标,然后拼接到sql语句中就可以了

    在java代码中对前台参数进行处理:

    stockParam.setPage(page);   //page:从第几页开始
    stockParam.setLimit(limit);     //limit:  每页显示多少条数据,相当于pageSize,count属性
    stockParam.setStart((page-1)*limit);   //start:计算出起始坐标位置,也就是说,从start位置,开始数limit条数据
    List<Stock> stockList = stockBusinessB.getStock(stockParam);
    Integer count = stockBusinessB.count(stockParam);
    

    limit:就是前台传递过来的参数,start=(page-1)*limit,此处不需要加1,因为初始行的坐标为0,接下来只需要将计算好的start、limit拼接到sql语句中即可。

    所以,最终在mapper.xml中的sql如下:

    select * from table
    where name="XX" and age>10
    ORDER BY create_timestamp  DESC
    LIMIT  #{start},  #{limit}  //从start位置开始,数limit条数据
    

      

    oracle分页查询:

     需求:从第page页开始,每页查询pageSize条数据

    //补充:首先需要在java代码中,计算出min、max,然后在拼接到sql语句中即可

      pageSize: 每页的条目数

      page:第几页

      min:(page-1)*pageSize + 1
      max: page * pageSize

      

    oracle中分页查询有伪列ROWNUM的概念,得分三步:先排序,再编号,最后取范围 

        SELECT * 
        FROM ( 
          SELECT ROWNUM rn, t.*
          FROM (
            SELECT ename, empno, salary, job  --此处的select决定所要查的数据,外面的select都是固定的。
            FROM emp
            ORDER BY salary DESC
          )t
        )
        WHERE rn BETWEEN min AND max
    

      

     

        

  • 相关阅读:
    VS快速格式化代码
    EasyUI——实现展示后台数据代码
    并行开发
    EF---结合三层方法的应用
    EF—主键冲突解决办法
    SVN——配置和安装
    谈谈MVC模式
    JDK/Java里的设计模式
    设计模式的设计原则和精神
    举例说明你使用的设计模式
  • 原文地址:https://www.cnblogs.com/quan-coder/p/6308699.html
Copyright © 2011-2022 走看看