确认
- [ ] 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
- [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
- [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题
当前程序版本
3.1.0
问题描述
xml文件中SQL定义如下:
<select id="listExistConfigs" resultMap="BaseResultMap">
SELECT * from table_name WHERE (store_id, brand_id, sign_id) IN <foreach collection="list" item="item" open="(" separator="," close=")"> (#{item.storeId}, #{item.brandId}, #{item.signId}) </foreach> AND del_flag = 0 AND is_valid = 1
</select>
解析报错。
详细堆栈日志
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, please exclude the tableName or statementId.
Caused by: net.sf.jsqlparser.JSQLParserException: null
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:154)
at com.baomidou.mybatisplus.core.parser.AbstractJsqlParser.parser(AbstractJsqlParser.java:60)
... 203 common frames omitted
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "," ","
at line 4, column 24.
Was expecting one of:
"&&"
")"
"AND"
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:19398)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:19248)
at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:6088)
at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:6051)
at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:6022)
at net.sf.jsqlparser.parser.CCJSqlParser.WhereClause(CCJSqlParser.java:5379)
at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:3195)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:3351)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3059)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:3052)
at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:132)
at net.sf.jsqlparser.parser.CCJSqlParser.Statements(CCJSqlParser.java:455)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:152)