mybatis中Oracle分页语句的写法
最近一段时间使用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 <= #{rowCount,jdbcType=INTEGER}
)
WHERE RN >= #{offSet,jdbcType=INTEGER}
</select>
这里主要注意下面几个问题:
1. mybatis 中 SQL 写在mapper.xml文件中,而xml解析 < 、>、<=、>= 时会出错,这时应该使用转义写法, 两种方式
| < | <= | > | >= | & | ' | " |
| < | <= | > | >= | & | ' | " |
示例: num >= #{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分页语句的写法的更多相关文章
- Mybatis中动态SQL语句中的parameterType不同数据类型的用法
Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型, 此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...
- Sqlserver2008和Oracle分页语句
SqlServer 分页语句 select StuID ,StuNo,StuName,Age,Sex, ClassName ClassName from (select *, row_number() ...
- mybatis中的查询语句in用法的相关问题
在开发的时候,mybatisl中使用in的时候会遇到一些问题,如果我们传的参数是String类型,以“,”来进行隔开的,例如:参数是0,1,2字符串,mybatis中的语句如下 <select ...
- 控制台输出 mybatis 中的sql语句
控制台输出 mybatis 中的sql语句 在 log4j.xml 文件中 增加如下配置 <!-- mybatis 输出的sql,DEBUG级别 --> <logger name=& ...
- MyBatis中动态SQL语句完成多条件查询
一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作:还通过一些条件选择语句让我们SQL的多条件.动态查询更加容易.简洁.直观. ...
- MyBatis 中实现SQL语句中in的操作 (11)
MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...
- mybatis中oracle实现分页效果
首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致 ...
- 关于SSM中mybatis向oracle添加语句采用序列自增的问题
在SSM向oracle数据库中插入语句时,报错如下: ### Error updating database. Cause: java.sql.SQLException: 不支持的特性 ### SQ ...
- 在mybatis中写sql语句的一些体会
本文会使用一个案例,就mybatis的一些基础语法进行讲解.案例中使用到的数据库表和对象如下: article表:这个表存放的是文章的基础信息 -- ------------------------- ...
随机推荐
- C# 打印机连接状态判断
原文:https://www.cnblogs.com/Old-Fish/p/6258118.html /// <summary> /// 判断是否连接打印机 /// </summar ...
- 17、前端知识点--Vue中ref的使用
methods里面的方法,需要手动触发才会执行. 如果想让页面一上来就执行的话,就需要写在mounted这个钩子函数中. <body> <div id="app" ...
- 行人重识别(ReID) ——基于MGN-pytorch进行可视化展示
下载MGN-pytorch:https://github.com/seathiefwang/MGN-pytorch 下载Market1501数据集:http://www.liangzheng.org/ ...
- ORA-00911: invalid character 错误解决
多数情况如下: 控制面板--系统和安全---系统--高级系统设置--高级--环境变量--系统变量中 变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK ...
- webpack的一般性配置及说明
1.webpack的常规配置 先给出一个示例: const path = require('path'); const HtmlWebpackPlugin = require('html-webpac ...
- intel vtune 介绍、安装和使用
intel vtune 介绍 https://software.intel.com/en-us/vtune intel vtune 安装包下载地址 https://software.intel.com ...
- python基础模块,包
#import cal,time #导入模块名可以看作导入一个变量 #from cal import add # from cal import *#引入所有变量 *代表所有 占内存 不推荐 # # ...
- 小程序Page里的函数比app.js先执行的解决办法
问题描述: 当我们初始化一个小程序时,默认文件 app.js 中有onLaunch函数, onLaunch: function () { console.log("onLaunch" ...
- Codeforces 1221F Game With String 思维题
题意:有两个人玩游戏,游戏规则如下:有一个长度为n的字符串,这个字符串由 . 和 X 构成,Alice可以选择a个连续的 . 把它们变成X, Bob可以选择连续的b个 . 把它们变成X.题目中保证a ...
- AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode
AOP的日志拦截类中,抛出异常: java.lang.IllegalStateException: It is illegal to call this method if the current r ...