最近一段时间使用oracle数据库查询分页, 用的是springboot.

Oracle数据库中没有像mysql中limit的写法, 只能换其他方式写.

考虑到oracle中的ROWNUM变量, 使用它能做到分页查询.

看下面的mybatis的xml文件:

<select id="selectDevices" parameterType="java.util.Map" resultType="java.util.Map">
select
<include refid="Base_Column_List" />
from
(
SELECT
D.ID, D.NAME, D.AGE, ROWNUM RN
FROM
(
SELECT
ID, NAME, AGE
FROM
DEVICES
) D
WHERE ROWNUM &lt;= #{rowCount,jdbcType=INTEGER}
)
WHERE RN &gt;= #{offSet,jdbcType=INTEGER}
</select>

这里主要注意下面几个问题:

1. mybatis 中 SQL 写在mapper.xml文件中,而xml解析 < 、>、<=、>= 时会出错,这时应该使用转义写法, 两种方式

  <               <= > >=    &       '            "
&lt;  &lt;=       &gt;         &gt;=          &amp;        &apos;        &quot;      

示例: num &gt;= #{num}

或则直接

<![CDATA[  sql语句  ]]>

示例:num <![CDATA[ >= ]]> #{num}

2.  里面的rowCount参数和offSet参数的含义

例如: 规定每页显示10条数据, pageSize = 10,  下面就是前台传过来的数据

offSet=(currentPage–1)*pageSize + 1 ,  rowCount=currentPage*pageSize

第一页的话,currentPage=1, offSet=1,  rowCount=10

第二页的话,currentPage=2, offSet=11,  rowCount=20

第三页的话,currentPage=3, offSet=21,  rowCount=30

等等

3. ROWNUM是oracle中特有的属性, 不要在mysql中使用

4. Oracle和Mysql关于like语句的写法, 如果要使用like方法:

示例定义: field_name为String类型

MyBatis+Oracle的like用法

field_name like '%'||#{field_name}||'%'

MyBatis+MySQL的like用法

field_name like concat('%',#{field_name},'%')

mybatis中Oracle分页语句的写法的更多相关文章

  1. Mybatis中动态SQL语句中的parameterType不同数据类型的用法

    Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型,    此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...

  2. Sqlserver2008和Oracle分页语句

    SqlServer 分页语句 select StuID ,StuNo,StuName,Age,Sex, ClassName ClassName from (select *, row_number() ...

  3. mybatis中的查询语句in用法的相关问题

    在开发的时候,mybatisl中使用in的时候会遇到一些问题,如果我们传的参数是String类型,以“,”来进行隔开的,例如:参数是0,1,2字符串,mybatis中的语句如下 <select ...

  4. 控制台输出 mybatis 中的sql语句

    控制台输出 mybatis 中的sql语句 在 log4j.xml 文件中 增加如下配置 <!-- mybatis 输出的sql,DEBUG级别 --> <logger name=& ...

  5. MyBatis中动态SQL语句完成多条件查询

    一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作:还通过一些条件选择语句让我们SQL的多条件.动态查询更加容易.简洁.直观. ...

  6. MyBatis 中实现SQL语句中in的操作 (11)

    MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...

  7. mybatis中oracle实现分页效果

    首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致 ...

  8. 关于SSM中mybatis向oracle添加语句采用序列自增的问题

    在SSM向oracle数据库中插入语句时,报错如下: ### Error updating database.  Cause: java.sql.SQLException: 不支持的特性 ### SQ ...

  9. 在mybatis中写sql语句的一些体会

    本文会使用一个案例,就mybatis的一些基础语法进行讲解.案例中使用到的数据库表和对象如下: article表:这个表存放的是文章的基础信息 -- ------------------------- ...

随机推荐

  1. (五:NIO系列) Reactor模式

    出处:Reactor模式 本文目录 1. 为什么是Reactor模式 2. Reactor模式简介 3. 多线程IO的致命缺陷 4. 单线程Reactor模型 4.1. 什么是单线程Reactor呢? ...

  2. redis关闭和启动

    redis关闭 到redis节点目录下执行如下命令 redis-cli -p 端口号 shutdown redis启动 ./redis-server 参数 参数:redis.conf文件全路径 需要到 ...

  3. 微信小程序之全局储存

    全局变量app.globalData 本地缓存wx.setStorageSync(KEY,DATA)wx.getStorageSync(KEY)wx.getStorageInfoSyncwx.remo ...

  4. SwiftUI 实战:从 0 到 1 研发一个 App

    心得感悟 起初看到 WWDC 上的演示 SwiftUI 时,我就觉得 SwiftUI 有种陌生的熟悉感(声明式语法),所以体验下,看看有没有什么启发. 先说下整体项目完成下来的感受: 用 Swift ...

  5. win7安装scrapy

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  6. 2018-10-2-win10-uwp-win2d-特效

    title author date CreateTime categories win10 uwp win2d 特效 lindexi 2018-10-02 21:20:46 +0800 2018-6- ...

  7. Python PostgreSQL Psycopg2

    [转] http://daigong.iteye.com/blog/901160 Python如果要操作Postgresql,需要一个API,这就需要Psycopg2 1. 链接PostgreSQL并 ...

  8. git clone的低级错误

    犯了一个低级错误: server ip: 192.168.40.41 有一个git账户 所有的git仓库都在/home/git仓库下 比如/home/git/u-boot-2018.07-fmxx.g ...

  9. nginx安装配置目录

    1.nginx日志轮转,用于lograte服务的日志切割. /etc/logrotate.d/nginx 2.cgi配置相关 /etc/nginx/fastcgi_params /etc/nginx/ ...

  10. 多线程、同步实现方法及Error和Exception的区别与联系

    多线程.同步实现方法? 实现线程有两种方法: 继承Thread类 实现Runnable接口 实现同步也有两种方法 一种是用同步方法:同步方法就是在方法返回类型后面加上synchronized, 比如: ...