相关推荐recommended
MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“
作者:mmseoamin日期:2023-12-11

MyBatis 使用报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "("at line 12, column 24.

问题原因:

原因是因为mybatisplus不识别sql查询语句中的返回使用函数

MyBatis版本升级到v3.5.1以上

错误日志:MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“,第1张

MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“,第2张

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "("
    at line 12, column 24.
Was expecting one of:
    "&"
    ")"
    "::"
    "<<"
    ">>"
    "ACTION"
    "ACTIVE"
    "ALGORITHM"
    "ARCHIVE"
    "ARRAY"
    .......此处省略
	at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:31234)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:31067)
	at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:7931)
	at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:5618)
	at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:5827)
	at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:5499)
	at net.sf.jsqlparser.parser.CCJSqlParser.SubSelect(CCJSqlParser.java:13888)
	at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:7907)
	at net.sf.jsqlparser.parser.CCJSqlParser.JoinerExpression(CCJSqlParser.java:8750)
	at net.sf.jsqlparser.parser.CCJSqlParser.JoinsList(CCJSqlParser.java:8569)
	at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:5619)
	at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:5827)
	at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:5499)
	at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:5494)
	at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:232)
	at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:153)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:188)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:63)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:38)
	at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:49)
	... 124 common frames omitted
ApiPostj接口测试时发生错误回显

MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“,第3张

Mapper接口(传日期格式)

MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“,第4张

Mapper.xml

MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“,第5张

解决办法:

1.如果当前mybatisplus v3.5.1 以下的 升级得到v3.5.1 版本既可以解决 此问题

2.在mapper接口上面增加 @InterceptorIgnore(tenantLine = "true") 注解

(@SqlParser(filter = true) 此注解应该也可以但已经弃用)

MyBatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “(“ “(“,第6张