解决MybatisPlus SqlServer OFFSET 分页问题
作者:cying2029 发布时间:2024-01-12 16:26:24
标签:MybatisPlus,SqlServer,分页
问题
使用MybatisPlus 连接 SqlServer 数据库 ,在分页的时候发生了如下的报错,sql语句和报错如下:
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: “@P0”附近有语法错误。
...
SQL: SELECT * FROM tb_admin OFFSET 0 ROWS FETCH NEXT 15 ROWS ONLY
错误源码重现
依赖
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- SqlServer依赖-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
<version>7.4.1.jre8</version>
</dependency>
配置分页
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER));
return interceptor;
}
}
分页处
//开始分页
IPage<Admin> pageInfo = new Page<Admin>().setCurrent(current).setSize(size);
pageInfo = adminService.page(pageInfo, wrapper); //报错点
找资料
OFFSET 0 ROWS FETCH NEXT 15 ROWS ONLY
是SqlServer2012之后才有的
关键字解析:
Offset
子句:用于指定跳过(Skip)的数据行;Fetch
子句:该子句在Offset子句之后执行,表示在跳过(Sikp)指定数量的数据行之后,返回一定数据量的数据行;执行顺序:
Offset子句必须在Order By 子句之后执行
,Fetch子句必须在Offset子句之后执行;
所以解决问题的关键是,加一个排序。
至于为什么,我大致看了一下其他的解释,说得加一个唯一字段排序,否则系统排序结果不唯一?于是我随便试了一下order by 非唯一字段一样分页正常,这种说法说不通。
如果有懂的,欢迎评论区留言
解决
在page之前,添加orderby字句
//开始分页
IPage<Admin> pageInfo = new Page<Admin>().setCurrent(current).setSize(size);
wrapper.orderByDesc("id");
pageInfo = adminService.page(pageInfo, wrapper); //报错点
来源:https://blog.csdn.net/qq_41653935/article/details/124309966
0
投稿
猜你喜欢
- 引入为什么要有垃圾回收机制Python中的垃圾回收机制简称(GC),我们在程序的运行中会产生大量的变量用于保存数据,而有时候有些变量已经没有
- ah!其实没有标题说的那么严重!不过下面可是我们开发产品初期的一些血淋淋的案例,更多的安全威胁可以看看北北同学的《python hack》P
- image.jsp------------------------------生成随机验证码图片的Jsp页面 代码如下: <
- WAP站点,这似乎是一个有点落伍的东西。在诞生之初,它很简陋,只能通过一个叫WML的标记语言来搭建没有任何美感的文字+链接页面。而今,绝大部
- 使用sql语句删除数据库中重复记录的两个方法如下:方法一declare @max integer,@id in
- 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Pe
- python3.7 打包成exe程序环境:pycharm2018.1+win7+python3.7工具:pyinstaller1、安装pyi
- 说起INDEX SERVER,我自己本来用的也不多,不过前两天公司要做一个INDEX的搜索,我从网上找了好多的资料,仔细分析了以后自己启动了
- 一、web.py简介web.py是一款轻量级的Python web开发框架,简单、高效、学习成本低,特别适合作为python web开发的入
- 主要有五个方面:一..HTML页面转UTF-8编码问题二.PHP页面转UTF-8编码问题三.MYSQL数据库使用UTF-8编码的问题四.JS
- 前言只有你想不到,没有我找不到写不了的好游戏!哈喽。我是你们的栗子同学啦~今天小编去了我朋友家里玩儿,看到了一个敲可爱的小狗狗,是我朋友养的
- 锟拷码和口字码说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?下面我们一步步探究。看一个
- 本文的OCR当然不是自己从头开发的,是基于百度智能云提供的API(我感觉是百度在中国的人工智能领域值得称赞的一大贡献),其提供的API完全可
- 最近,我有机会研究对视觉设计作用的常见误解,这些误解仍然盛行于行政主管、产品主管,工程经理和市场专家中。设计团队成员如何说明这些认识是错误的
- 1、先介绍如何用PHP连上数据库(数据库用户名“root”,密码“sun”,有库“myguestbook”) 图62、PHP和My
- 一、简介py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装pyth
- 装饰器模式在以下场景中被广泛应用:动态地向对象添加职责或行为,而不需要更改对象的代码。例如,可以通过装饰器模式来实现日志记录、性能分析、缓存
- 转:coolcode.cn通常情况下,我们的网页要指定一个编码字符集,如 GB2312、UTF-8、ISO-8859-1 
- 一、Socketserver实现FTP,文件上传、下载目录结构1、socketserver实现ftp文件上传下载,可以同时多用户登录、上传、
- 开发高质量软件的过程中,我们经常会为每个函数编写测试,这样在开发过程中运行这些测试的时候就比较方便,doctest是一个python标准库自