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},'%')
posted on 2019-10-25 18:20 努力做一个伪程序员 阅读(3773) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!