MyBtisplus异常PaginationInnerInterceptor net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “,” ","at line 1, column 143.
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "," ","
at line 1, column 143.
Was expecting one of:
"&"
"::"
";"
"<<"
..........省略
其实出现这个问题的主要原因有两点
1.在选择mybatisplus分页插件时的DbType.XXX没有正确的选用,如果你使用的是mysql,就需要修改为DbType.MYSQL,如果是SQLSERVER的话就修改成SQL_SERVER2005(注意:如果修改成SQL_SERVER,有可能出现错误)
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER2005));
return interceptor;
}
2.出现这个问题的主要原因还是-》分页插件在处理count时会默认进行sql优化,优化失败会抛出异常。无法优化的sql会降级到非优化的count方法。从而弹出异常(详细移步大佬博客sql优化失败弹出异常错误信息)
解决办法就是在调用分页方法处将其代码进行修改(我这是是在Server层进行调用),去掉sql优化page.setOptimizeCountSql(false);
原来的样子-》
@Override
public Page<File_Distribution_Library> SelectFile_Distribution_Library(Integer page, Integer pageSize) {
//根据上传人和阶段号显示文件库分发记录
QueryWrapper<File_Distribution_Library> list=new QueryWrapper<>();
list.eq("uploadman", StpUtil.getTokenInfo().getLoginId());
list.eq("stageno","A00");
return baseMapper.selectPage(PageDTO.of(page, pageSize),list);
}
修改后-》
@Override
public Page<File_Distribution_Library> SelectFile_Distribution_Library(Integer page, Integer pageSize) {
//根据上传人和阶段号显示文件库分发记录
QueryWrapper<File_Distribution_Library> list=new QueryWrapper<>();
list.eq("uploadman", StpUtil.getTokenInfo().getLoginId());
list.eq("stageno","A00");
Page<File_Distribution_Library> page1=new Page(page,pageSize);
page1.setOptimizeCountSql(false);
return baseMapper.selectPage(page1,list);
}
这个问题卡了我很久,希望能帮到遇到同样问题的人