当前使用版本(必填,否则不予处理)
mybatis-plus 3.5.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
将业务系统mybatis-plus版本从3.4.1升级至3.5.2,业务逻辑无变化,传相同参数进行查询报sql解析错误 尝试升级到最新版3.5.3.1,也报相同错误 版本降低到3.5.0则正常 推测与jsqlparser升级到4.4有关,强制降低至4.3尝试,查询正常,升级至最新的4.6,查询也正常,建议官方考虑一下默认jsqlparser兼容性
重现步骤(如果有就写完整)
@Select({
" select u.id userId,ur.id userRoleId,u.name userName,u.login_account_name loginAccountName",
" from its3_user u ",
" left join its3_user_role ur on ur.user_id = u.id",
" where ur.role_id = #{roleId}"
})
List<QueryUserListDTO> queryByRoleId(@Param("roleId") Integer roleId);
报错信息
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: select u.id userId, ur.id userRoleId, u.name userName, u.login_account_name loginAccountName from its3_user u left join its3_user_role ur on ur.user_id = u.id where ur.role_id = ?
at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)
at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:52)
at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.beforeQuery(TenantLineInnerInterceptor.java:65)
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:78)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
at com.sun.proxy.$Proxy257.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
... 99 common frames omitted
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "," ","
at line 1, column 19.
Was expecting one of:
";"
"CONNECT"
"EMIT"
"GROUP"
"HAVING"
"INTO"
"START"
"WINDOW"
<EOF>
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:31468)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:31301)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:163)
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)
Comment From: tltwuyu
我遇到了一样的问题。
Comment From: wichell
升级后 jsqlparse 也升级到了4.4版本,这个版本里 ur 不能用来做表的别名 ,换过一个名字就行了。
Comment From: dengliming
换名字还存在其他问题,我是先回退jsqlparser到4.3版本了
Comment From: nieqiurong