开发者

MyBatisPlus报错:Failed to process,please exclude the tableName or statementId问题

目录
  • 报错详情
  • 报错原因
  • 解决方法
    • 方法一:排除表名
    • javascript法二:排除该语句
  • 总结

    报错详情

    Error querying database. Cause: com.baomidou.myBATisplus.core.exceptions.MybatisPlusException: Failed to process, pleasjavascripte exclude the tableName or statementId. Error SQL: xxxxxxxx

    报错原因

    使用了自定义SQL,可能含有特殊的函数或者复杂的语法,因而不被jsqlParser(SQL解析器)所支持(无法添加租户id之类的字段),以致抛出了JSQLParserException

    该异常又被MyBatisPlus捕获,并封装成MybatisPlusException后抛出。

    源码:

    com.baomidou.mybatisplus.core.parser.AbstractJsqlParser

    MyBatisPlus报错:Failed to process,please exclude the tableName or statementId问题

    解决方法

    Failed to processphp, please exclude the tableName or statementId

    翻译过来就是:

    处理失败,请将表名或者语句id进行排除。

    P.S. 提示的很具体,但读起来容易懵,因为不熟悉的jlTNp人并不知道是租户id出了问题

    方法一:排除表名

    在配置MyBatisPlus的TenantHandler时在doTableFilter方法中将该表过滤掉(也就是不处理这个表的租户id字段)。

    方法二:排除该语句

    在自定义SQL的接口上标注 @SqlParser(filter = true)

        @SqlParser(filter = true)
        @Select("此处应有很酷炫的SQL")
        void selectDemo();
    

    官方对于此注解的解释是:

    租户注解,支持method上以及mapper接口上,默认值为false;

    • trjsue 表示过滤SQL解析,即不会进入ISqlParser解析链;
    • false 会进解析链并追加例如tenant_id等条件。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜