确认

  • [X] 我使用的版本是最新版, 并且使用插件确认过项目里无依赖版本冲突
  • [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题

当前程序版本

3.5.7

问题描述

我的表字段中有一个字段为 output,在使用BaseMapper.selectPage()方法时,会打印错误日志如下。 ` 24-09-14.15:47:48.940 [http-nio-8080-exec-4] WARN PaginationInnerInterceptor - optimize this sql to a count sql has exception, sql:"SELECT output FROM tb_sys_log WHERE deleted=0 ORDER BY created_time DESC", exception: java.util.concurrent.ExecutionException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "," "," at line 1, column 60.

Was expecting one of:

"."
"::"
"["
"^"
<EOF>
<ST_SEMICOLON>

问题原因是output字段可能是jsqlparser的关键字,在selectPage()中,调用的JsqlParserGlobal.parse(sql)方法,会报错,到时sql优化失败。 建议,mybatis-plus自动生成的select语句中,将所有的字段名,转译一下。 如 select `output` from tb_sys_log where `deleted` = 0

详细堆栈日志

24-09-14.15:47:48.940 [http-nio-8080-exec-4] WARN  PaginationInnerInterceptor  - optimize this sql to a count sql has exception, sql:"SELECT output FROM tb_sys_log  WHERE deleted=0       ORDER BY created_time DESC", exception:
java.util.concurrent.ExecutionException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "," ","
    at line 1, column 60.

Was expecting one of:

    "."
    "::"
    "["
    "^"
    <EOF>
    <ST_SEMICOLON>

Comment From: miemieYaho

不会转义