当前使用版本(必须填写清楚,否则不予处理)

3.3.0

该问题是怎么引起的?(最新版上已修复的会直接close掉)

分页查询附带排序时,MP在查询总数时把order By带进去了,sqlserver在select count的时候不能带order by 所有就报错了

重现步骤

IPage<WebNews> page = new Page<>(pageNum, pageSize); webNewsService.lambdaQuery().orderByDesc(WebNews::getModitime).page(page);

报错信息

生成的SQL: SELECT COUNT(1) FROM ( SELECT ID FROM Web_News ORDER BY Moditime DESC ) TOTAL 数据库错误信息: The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

Comment From: miemieYaho

你这个是jsqlparser无法解析sql而生成的固定count格式

Comment From: 534519560

也就是我哪里没有配置好?那我再仔细检查检查,谢谢

Comment From: miemieYaho

https://github.com/baomidou/mybatis-plus/blob/3.0/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/optimize/JsqlParserCountOptimize.java 走到 131行了

Comment From: 534519560

经检查,是项目引用了低版本的jsqlparser导致的,再次感谢

Comment From: Horrypotter

@534519560 咋解决的,我项目里单纯引入了mybatis-plus,没有引入jsqlparser,应该没有低版本的问题,也是sqlserver加了排序就报错

Comment From: 534519560

@Horrypotter 检查下别的框架有没有引入?我是之前手动引入了1.2版本的jsqlparser,去掉后就可以了.用maven检查下jsqlparser有没有版本冲突