jsqlparser v4.6 版本下sql解析报错

发布时间 2023-11-06 14:46:23作者: dkpp

项目版本:

springboot 2.7.2

mybatis-plus 3.5.2

jsqlparser 4.6

该版本下mybatis-plus生成的sql文件带有连续\n\n\n

CCJSqlParserUtil.parseStatements("select \n\n\n *  from \n\n dual \n")

再使用jsqlparser进行sql解析时 会出现如下报错

net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "from" "FROM"
    at line 1, column 11.

Was expecting one of:

    "CONNECT"
    "EMIT"
    "GROUP"
    "HAVING"
    "INTO"
    "START"
    "WINDOW"
    <EOF>
    <ST_SEMICOLON>

但其实是因为\n\n\n会导致一句sql被解析为两句sql 从而导致无法正常解析sql的问题 该问题不知道是因为mybatis-plus未注意到该问题 从而导致的sql文件输出异常。还是jsqlparser应该支持这种语法导致的。

实际在项目过程中是如下报错:

net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "\n\n\n"

目前我的解决方案为替换sql文本中所有的\n。