SpringBoot項目:net.sf.jsqlparser.parser.ParseException: Encountere
原文地址[1]
寫在前面
最近開發(fā)過程中,在where條件中使用IF函數(shù),在MySQL數(shù)據(jù)庫中,使用Navicat運行沒有問題,但是運行項目的時候,死活過不去,一直報錯,后來一番折騰找到了解決方案,所以,以防后續(xù)再出現(xiàn)類似問題,僅做記錄!
說明:項目為SpringBoot項目,持久化層框架使用的是Mybatis-plus(版本為3.0.7)
1.問題復現(xiàn)
1.1 SQL語句執(zhí)行結(jié)果

1.2 Mapper層對應(yīng)接口

1.3 Mabyties對應(yīng)xml

1.4 報錯信息

2. 問題原因
針對這個問題,在網(wǎng)上查了相關(guān)文檔,Mybatis-plus官網(wǎng)說是框架中使用到了多租戶功能,Mybatis-plus 會 進行數(shù)據(jù)權(quán)限的過濾,但是有些接口,其實并不想被多租戶過濾,所以要對該條sql,進行租戶放行。關(guān)于這塊Mybatis-plus官網(wǎng)說明了 SqlParserFilter sql 解析過濾器,當然對這部分感興趣的小伙伴們,可以去Mybatis-plus官網(wǎng)查看相關(guān)源碼,我這里就不在具體說明了。
說明:多租戶:多個用戶間使用同一套程序,但每個用戶之間實現(xiàn)數(shù)據(jù)隔離
3.問題解決
參考Mybatis-plus官網(wǎng),在Mapper層接口方法上 加入注解
官網(wǎng)截圖如下

加完注解之后的Mapper層接口方法如下:
List<EmpWhiteList>?getAdminList(?String?empId,??String?timeDate);
加完此注解之后,由于項目的Mybatis-plus版本為3.0.7,所以這里還要再在application.yml文件中添加下列配置才能生效
說明:如果Mybatis-plus版本是3.1.1至3.4.0以下版本可以直接 添加此注解 即可,3.1.1以下版本需要添加如下配置:
mybatis-plus3.4.0及以上版本注意: @SqlParser(filter = true) 在mybatis-plus最新版本3.4.0及以上版本中被標記為已過時,具體替代方案,官網(wǎng)已給出
關(guān)于此注解官網(wǎng)給出如下使用方法:

鑒于此,如果項目引入的MybatisPlus版本為3.4.0及以上,則多租戶屏蔽某個特定mapper接口的方法,則使用如下解決方案:
引用鏈接
[1]
?原文地址:?https://www.cnblogs.com/cndarren/p/13218290.html