解决MybatisPlus SqlServer OFFSET 分页问题
作者:cying2029 时间:2024-01-12 16:26:24
问题
使用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
标签:MybatisPlus,SqlServer,分页
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
OpenCV-Python实现人脸美白算法的实例
2023-03-27 00:33:39
![](https://img.aspxhome.com/file/2023/5/114645_0s.png)
python PIL模块的基本使用
2022-08-28 16:35:19
基于Python编写一个ISBN查询工具
2022-02-22 09:43:21
![](https://img.aspxhome.com/file/2023/3/83773_0s.png)
MySQL外键约束详解
2024-01-28 11:30:00
![](https://img.aspxhome.com/file/2023/4/70374_0s.jpg)
linux系统使用python获取cpu信息脚本分享
2021-10-18 17:45:30
![](https://img.aspxhome.com/file/2023/3/131453_0s.jpg)
PHP VBS JS 函数 对照表
2024-04-29 13:55:57
详解Vue用自定义指令完成一个下拉菜单(select组件)
2024-05-09 15:19:06
![](https://img.aspxhome.com/file/2023/4/126474_0s.png)
Tensorflow 卷积的梯度反向传播过程
2021-02-05 09:15:29
使用HTML5中的canvas进行图形图像.游戏.动画开发时,不需要双缓冲机制
2010-04-01 12:21:00
Python使用GitPython操作Git版本库的方法
2021-04-28 07:22:16
基于Python os模块常用命令介绍
2023-09-09 01:53:43
![](https://img.aspxhome.com/file/2023/2/121912_0s.png)
举例详解JavaScript中Promise的使用
2024-06-05 09:58:07
一个修改Oracle数据库用户密码的小诀窍
2009-09-30 15:29:00
Python3 MySQL 数据库连接的使用示例
2024-01-21 18:15:40
javascript实现自动输出文本(打字特效)
2024-02-25 18:25:14
详解go中panic源码解读
2024-03-22 08:22:51
Pytorch实现List Tensor转Tensor,reshape拼接等操作
2021-06-06 19:58:51
![](https://img.aspxhome.com/file/2023/6/80786_0s.png)
扩展性很好的一个分页存储过程分享
2011-11-03 17:04:16
python3 selenium自动化 frame表单嵌套的切换方法
2022-05-15 10:26:57
![](https://img.aspxhome.com/file/2023/7/109357_0s.jpg)
Python新版极验验证码识别验证码教程详解
2022-03-07 01:02:55
![](https://img.aspxhome.com/file/2023/8/133228_0s.png)