美文网首页
oracle实现分页的几种方式

oracle实现分页的几种方式

作者: 先生zeng | 来源:发表于2023-08-30 23:52 被阅读0次

Mybatis+Oracle 分页

1,使用mybatis的插件PageHelper

(1)Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:填写的是监听的Mapper权限命名的接口 -->
<mapper namespace="cn.ssm.dao.StudentMapper">
    <select id="selectUserinfo"  resultType="cn.ssm.dao.bean.Userinfo">
        select *  from userinfo
    </select>
</mapper>

复制

(2)分页实现

      public List<Userinfo> selectUserinfo() {
          PageHelper.startPage(2, 3); //使用分页插件
          List<Userinfo> userinfos =studentMapper.selectUserinfo();
          PageInfo<Userinfo> infos=new PageInfo<Userinfo>(userinfos); 
                  // 这里获得的list可能会多一个字段导致接口响应返回会有脏字段,所以一般建议debug一下处理下。

          List<Userinfo> list = infos.getList(); 
          return userinfos; 
      }

复制

2,使用利用 rownum这个字段,oracle 数据库中特有的字段

(1)Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:填写的是监听的Mapper权限命名的接口 -->
<mapper namespace="cn.ssm.dao.StudentMapper">
 <select id="selectUserinfo" parameterType="cn.ssm.dao.bean.Userinfo" resultType="cn.ssm.dao.bean.Userinfo">
      select * from ( select row_.*, rownum rownum_ from ( select * from  userinfo ) row_ 
      where rownum &lt;=  #{pageNum} * #{pageSize} ) where rownum_ &gt;  (#{pageNum} - 1) * #{pageSize}
  </select>
</mapper>

复制

(2)分页实现

public class Userinfo {
    private int id;
    private String name;
    private String password;
    private Integer pageNum;
    private Integer pageSize;
}

复制

    public List<Userinfo> selectUserinfo() {
        Userinfo user=new Userinfo();
                user.setPageNum(2);//设置当前为第2页
                user.setPageSize(3);//设置每页总共3条数据
        List<Userinfo> userinfos = studentMapper.selectUserinfo(user);
        return userinfos;
    }

复制

结果展示:

[图片上传失败...(image-858a4d-1693468685174)]

Mybatis实现Oracle 分页「建议收藏」


例子:select * from (select t.,rownum r from (select * from A) t where rownum < 10)where r >5 第一层:select * from A:要查询的数据 第二层:select t.,rownum r from (select * from A) t where rownum < 10:取前 10 行 第三层:select * from (select t.*,rownum r from (select * from A) t where rownum < 10)where r >5:取 5-10 行


说明: select * from ( select row_., rownum rownum_ from ( select * from userinfo ) row_ where rownum <= #{pageNum} * #{pageSize} )a where rownum_ > ( #{pageNum}- 1) * #{pageSize} 解析:先查询select * from userinfo 总条数并起个别名 row_, 然后查询select row_., rownum rownum_ from ( select * from userinfo ) row_ where rownum <= #{pageNum} * #{pageSize} ,把所有数据和rownum固定字段列查询并起别名, 最后从a中查询出想要的数据,主要是使用rownum固定字段列筛选实现分页 where rownum_ > ( #{pageNum}- 1) * #{pageSize}

相关文章

  • 分页的几种实现方式

    一:分页的几种实现方式 1.1:手动实现一个分页 1.2通过 sql语句 实现分页 1.3...

  • 数据库面试

    数据库方向 oracle 1.oracle分页是如何实现的 Oracle中的表,除了我们建表时设计的各个字段,...

  • 分页查询oracle,mysql实现方式详解

    分页查询 排序 首先分页查询很重要的一点是排序。只有一个稳定的排序才能保证分页数据的准确性。简单解析一下排序的稳定...

  • Java Web 之分页技术

    本文包括:1、分页技术概述2、实现分页3、完善分业——分页工具条4、几种常见的分页工具条 1、分页技术概述 物理分...

  • SpringMVC3.0+MyIbatis3.0(分页示例)【转

    主要使用Oracle的三层sql实现分页! 一 环境:XP3+Oracle10g+MyEclipse6+(Tomc...

  • 数据库分页查询

    今天在这里给大家分享一下oracle和mysql的两种分页查询。 oracle的分页 oracle的分页需要用到R...

  • oracle实现分页查询

    有句一米长的SQL,当讲。 /* *@author linqiuping * firstIndex:起始索引 * ...

  • 【Oracle】Oracle备份的几种方式

    这里使用Oracle 12C来大概演示说明一下rman的基本用法,这里不会深入讨论,因为本人也只是刚刚才接触,只是...

  • Oracle ROWNUM用法和分页查询总结

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 Oracle分页查询格式(一):http://...

  • 仿抖音上下滑动分页视频

    仿抖音上下滑动分页视频 目录介绍 01.先来看一下需求 02.有几种实现方式2.1 使用ViewPager2.2 ...

网友评论

      本文标题:oracle实现分页的几种方式

      本文链接:https://www.haomeiwen.com/subject/bzhamdtx.html