PageHelper排坑,处理排序失败: net.sf.jsqlparser.JSQLParserException

945 阅读1分钟

一、问题描述

遇到了一个报错

com.github.pagehelper.PageException: 处理排序失败: net.sf.jsqlparser.JSQLParserException

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "is" "IS"
    at line 28, column 21.

Was expecting one of:

    "."
    ";"
    "AND"
    "CONNECT"
    "EXCEPT"
    "FOR"
    "GROUP"
    "HAVING"
    "INTERSECT"
    "MINUS"
    "ORDER"
    "START"
    "UNION"
    <EOF>

通过报错,我们简单可以看出是pagehelper在处理sql语句时,sql中包含了不支持的语句

二、问题排查

  • 先看java代码

代码里确实用了pagehelper的排序

Page page = PageHelper.startPage(pageNum, pageSize, orderString);
  • 再看sql

因为sql里面使用了is,pagehelper排序不支持这个关键字,所以就报错了

where is_hide is true

三、问题解决

对于我这个问题,把is换成=就行了 还有别的情况,使用了一些关键字,不在下面之中,也会报错

Was expecting one of:

    "."
    ";"
    "AND"
    "CONNECT"
    "EXCEPT"
    "FOR"
    "GROUP"
    "HAVING"
    "INTERSECT"
    "MINUS"
    "ORDER"
    "START"
    "UNION"
    <EOF>

报错里面都有提示,可以根据提示判断具体哪个关键词有问题

Encountered unexpected token: "is" "IS"