MyBatisPlus报错:Failed to process,please exclude the tableName or statementId问题
报错详情
Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, please exclude the tableName or statementId. Error SQL: xxxxxxxx
报错原因
使用了自定义SQL,可能含有特殊的函数或者复杂的语法,因而不被JSqlParser
(SQL解析器)所支持(无法添加租户id
之类的字段),以致抛出了JSQLParserException
。
该异常又被MyBatisPlus捕获,并封装成MybatisPlusException
后抛出。
源码:
com.baomidou.mybatisplus.core.parser.AbstractJsqlParser
解决方法
Failed to process, please exclude the tableName or statementId
翻译过来就是:
处理失败,请将表名或者语句id进行排除。
P.S. 提示的很具体,但读起来容易懵,因为不熟悉的人并不知道是租户id出了问题
方法一:排除表名
在配置MyBatisPlus的TenantHandler
时在doTableFilter
方法中将该表过滤掉(也就是不处理这个表的租户id
字段)。
方法二:排除该语句
在自定义SQL的接口上标注 @SqlParser(filter = true)
:
@SqlParser(filter = true) @Select("此处应有很酷炫的SQL") void selectDemo();
官方对于此注解的解释是:
租户注解,支持method上以及mapper接口上,默认值为false;
- true 表示过滤SQL解析,即不会进入ISqlParser解析链;
- false 会进解析链并追加例如tenant_id等条件。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java + Selenium + OpenCV解决自动化测试中的滑块验证问题
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上,这篇文章主要介绍了Java + Selenium + OpenCV解决自动化测试中的滑块验证,需要的朋友可以参考下2022-07-07教你在 IntelliJ IDEA 中使用 VIM插件的详细教程
这篇文章主要介绍了在 IntelliJ IDEA 中使用 VIM的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-05-05Springboot和bootstrap实现shiro权限控制配置过程
这篇文章主要介绍了Springboot和bootstrap实现shiro权限控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-04-04浅谈System.getenv()和System.getProperty()的区别
这篇文章主要介绍了System.getenv()和System.getProperty()的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06Mybatis之@ResultMap,@Results,@Result注解的使用
这篇文章主要介绍了Mybatis之@ResultMap,@Results,@Result注解的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12
最新评论