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,可能含有特殊的函數(shù)或者復(fù)雜的語法,因而不被JSqlParser(SQL解析器)所支持(無法添加租戶id之類的字段),以致拋出了JSQLParserException。
該異常又被MyBatisPlus捕獲,并封裝成MybatisPlusException后拋出。
源碼:
com.baomidou.mybatisplus.core.parser.AbstractJsqlParser

解決方法
Failed to process, please exclude the tableName or statementId
翻譯過來就是:
處理失敗,請將表名或者語句id進(jìn)行排除。
P.S. 提示的很具體,但讀起來容易懵,因?yàn)椴皇煜さ娜瞬⒉恢朗亲鈶鬷d出了問題
方法一:排除表名
在配置MyBatisPlus的TenantHandler時在doTableFilter方法中將該表過濾掉(也就是不處理這個表的租戶id字段)。
方法二:排除該語句
在自定義SQL的接口上標(biāo)注 @SqlParser(filter = true):
@SqlParser(filter = true)
@Select("此處應(yīng)有很酷炫的SQL")
void selectDemo();
官方對于此注解的解釋是:
租戶注解,支持method上以及mapper接口上,默認(rèn)值為false;
- true 表示過濾SQL解析,即不會進(jìn)入ISqlParser解析鏈;
- false 會進(jìn)解析鏈并追加例如tenant_id等條件。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java Guava排序器Ordering原理及代碼實(shí)例
這篇文章主要介紹了Java Guava排序器Ordering原理及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
SpringBoot中Date格式化處理的三種實(shí)現(xiàn)
Spring Boot作為一個簡化Spring應(yīng)用開發(fā)的框架,提供了多種處理日期格式化的方法,本文主要介紹了SpringBoot中Date格式化處理實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-03-03
spring mvc實(shí)現(xiàn)文件上傳并攜帶其他參數(shù)的示例
本篇文章主要介紹了spring mvc實(shí)現(xiàn)文件上傳并攜帶其他參數(shù)的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
Springboot下使用Redis管道(pipeline)進(jìn)行批量操作
本文主要介紹了Spring?boot?下使用Redis管道(pipeline)進(jìn)行批量操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
MyBatis新增數(shù)據(jù)時自增id的兩種寫法小結(jié)
本文介紹了在MyBatis中配置自增ID的兩種方法:一種是通過在Mapper文件中設(shè)置useGeneratedKeys和keyProperty,另一種是使用selectKey標(biāo)簽,批量插入時,同樣采用useGeneratedKeys標(biāo)簽,感興趣的可以了解一下2024-09-09
spring boot加載freemarker模板路徑的方法
這篇文章主要介紹了spring boot加載freemarker模板路徑的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

