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

com.baomidou mybatis-plus-boot-starter 3.5.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

paginationInterceptor.setOptimizeJoin(true); 开启分页plugin的join优化后在对sql进行解析时: Select select = (Select) CCJSqlParserUtil.parse(sql); 当sql出现多个left join 时jsqlparser会报ParseException;而jsqlparser在4.6已经修复该问题 建议将mp中的jsqlparser依赖由4.4版本更换为4.6版本; 目前项目解决方案: com.baomidou mybatis-plus-boot-starter 3.5.3.1 com.github.jsqlparser jsqlparser com.github.jsqlparser jsqlparser 4.6

重现步骤(如果有就写完整)

String sql = "select *\n" + "from ees_user_info eui\n" + " left join ees_empl_info eee on eui.id = eee.user_id\n" + " left join user_role ur on eui.id = ur.user_id";

    try {
        Select select = (Select) CCJSqlParserUtil.parse(sql);
    } catch (JSQLParserException e) {
        e.printStackTrace();
    }

报错信息

~~~console net.sf.jsqlparser.JSQLParserException: Encountered unexpected token: "ur" at line 4, column 30.

Was expecting one of:

";"
"ACTION"
"ACTIVE"
"ALGORITHM"
"ARCHIVE"
"ARRAY"
"AS"
"AT"
"BYTE"
"CASCADE"
"CASE"
"CAST"
"CHANGE"
"CHAR"
"CHARACTER"
"CHECKPOINT"
"COLUMN"
"COLUMNS"
"COMMENT"
"COMMIT"
"CONNECT"
"COSTS"
"CYCLE"
"DBA_RECYCLEBIN"
"DEFAULT"
"DESC"
"DESCRIBE"
"DISABLE"
"DISCONNECT"
"DIV"
"DO"
"DUMP"
"DUPLICATE"
"EMIT"
"ENABLE"
"END"
"EXCLUDE"
"EXTRACT"
"FALSE"
"FILTER"
"FIRST"
"FLUSH"
"FN"
"FOLLOWING"
"FORMAT"
"FULLTEXT"
"GROUP"
"HAVING"
"HISTORY"
"INDEX"
"INSERT"
"INTERVAL"
"ISNULL"
"JSON"
"KEY"
"LAST"
"LEADING"
"LINK"
"LOCAL"
"LOG"
"MATERIALIZED"
"NO"
"NOLOCK"
"NULLS"
"OF"
"OPEN"
"OVER"
"PARALLEL"
"PARTITION"
"PATH"
"PERCENT"
"PIVOT"
"PRECISION"
"PRIMARY"
"PRIOR"
"QUERY"
"QUIESCE"
"RANGE"
"READ"
"RECYCLEBIN"
"REGISTER"
"REPLACE"
"RESTRICTED"
"RESUME"
"ROW"
"ROWS"
"SCHEMA"
"SEPARATOR"
"SEQUENCE"
"SESSION"
"SHUTDOWN"
"SIBLINGS"
"SIGNED"
"SIZE"
"SKIP"
"START"
"SUSPEND"
"SWITCH"
"SYNONYM"
"SYSTEM"
"TABLE"
"TABLESPACE"
"TEMP"
"TEMPORARY"
"TIMEOUT"
"TO"
"TOP"
"TRUE"
"TRUNCATE"
"TRY_CAST"
"TYPE"
"UNQIESCE"
"UNSIGNED"
"USER"
"VALIDATE"
"VALUE"
"VALUES"
"VIEW"
"WINDOW"
"XML"
"ZONE"
<EOF>
<K_DATETIMELITERAL>
<K_DATE_LITERAL>
<K_NEXTVAL>
<K_STRING_FUNCTION_NAME>
<S_CHAR_LITERAL>
<S_IDENTIFIER>
<S_QUOTED_IDENTIFIER>

at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:190)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:63)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:38)
at com.example.mytestproject.TestJsqlParser.main(TestJsqlParser.java:21)

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "ur" at line 4, column 30.

Comment From: Y-Meta

原来我这个是因为jsqlparser4.4不支持 cs、ur、uu等 隔离级别的关键字导致的报错呀!受教了