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

Mybatis实现Oracle 分页「建议收藏」Mybatis+Oracle分页1,使用mybatis的插件PageHelper(1)Mapper.xml<?xmlversion=”1.0″encoding=”UTF-8″?><!DOCTYPEmapperPUBLIC”-//mybatis.org//DTDMapper3.0//EN””http://mybatis.org/dtd/mybati…

大家好,又见面了,我是你们的朋友全栈君。

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<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;
	}

结果展示:

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}


小于号:&lt;

大于号:&gt;

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140300.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • 消息中间件

    消息中间件消息中间件

  • 作业调度和进程调度的辨析题_进程调度的功能有哪些

    作业调度和进程调度的辨析题_进程调度的功能有哪些很多学习完《操作系统原理》这门课程的小伙伴都应该对“FCFS(先到先服务)”、“SJF(短作业优先)”等调度算法原理比较熟悉。但是在实际做题的时候,往往一不小心就把概念搞错,不容易区分“作业调度”和“进程调度”的区别。下面我主要针对这两个概念进行解析并给出经典习题解答。PS:本博客并不详解每种调度算法的原理,因此有这方面需求的小伙伴可以直接pass了。1、作业调度作业调度又称为高级调度,频度较低。其主要工作是将位于外存后备队列中的某个(或某几个)作业调入内存,排在就绪队列上。注意了,这个时候仅仅是将作

  • xshell安装步骤_oracle安装sid已在使用

    xshell安装步骤_oracle安装sid已在使用1.安装xhost[root@oracle11~]#yumwhatprovides”*/xhost”Loadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfile*base:mirrors.163.com*extras:mirrors.aliyun.com*updates:mirrors.aliyun.combase/7/x86_64/filelists_db

  • 小程序 table_小程序下滑样式

    小程序 table_小程序下滑样式先看效果图wxml<viewclass=”mdui-m-t-2mudi-f-s-24″>1.养老保险</view><viewclass=”mdui-m-t-1mudi-indentmudi-f-s-20″>养老保险,全称社会基本养老保险,是国家和社会根据一定的法律和法规,为解决劳动者在达到国家规定的解除劳动义务的劳动…

  • postman做模拟服务器_centos7服务器安装教程

    postman做模拟服务器_centos7服务器安装教程postman安装方式:1)浏览器插件方式安装:2)客户端安装:https://www.getpostman.com/apps使用教程:1)界面:2)利用postman发送post请求、参数是json格式3)Get方法和Post方法的区别1.get是从服务器上获取数据,post是向服务器传送数据。2.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。3.POST的安全性要比…

  • 龙族幻想购买限制_龙族幻想宽限一日

    龙族幻想购买限制_龙族幻想宽限一日 龙族系列,可设每月自动无最小支付/1. http://www.apachemails.com/pages/index.php?refid=wy13062232. http://www.bondjamesbond.net/pages/index.php?refid=wy1306223. http://www.cashpointclicks.com/pages/index.php?r

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号