SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

写在前面

  最近开发过程中,在where条件中使用IF函数,在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错,后来一番折腾找到了解决方案,所以,以防后续再出现类似问题,仅做记录!

说明:项目为SpringBoot项目,持久化层框架使用的是Mybatis-plus(版本为3.0.7)

1、问题复现

1.1 SQL语句执行结果

<span>SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX</span>

1.2 Mapper层对应的接口

<span>SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX</span>

1.3 Mybatis对应的xml文件代码

<span>SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX</span>

 1.4 报错信息

<span>SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX</span>

 2、问题原因

  针对这个问题,在网上查了相关文档,Mybatis-plus官网说是框架中使用到了多租户功能,Mybatis-plus 会 进行数据权限的过滤,但是有些接口,其实并不想被多租户过滤,所以要对该条sql,进行租户放行。关于这块Mybatis-plus官网说明了 SqlParserFilter  sql 解析过滤器,当然对这部分感兴趣的小伙伴们,可以去Mybatis-plus官网查看相关源码,我这里就不在具体说明了。

说明:多租户:多个用户间使用同一套程序,但每个用户之间实现数据隔离

3、问题解决

  参考Mybatis-plus官网,在Mapper层接口方法上 加入注解  

@SqlParser(filter=true)

官网截图如下:

<span>SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX</span>

加完注解之后的Mapper层接口方法如下:

@SqlParser(filter = true)
List<EmpWhiteList> getAdminList(@Param("empId") String empId, @Param("timeDate") String timeDate);

加完次注解之后,由于项目的Mybatis-plus版本为3.0.7,所以这里还要再在application.yml文件中添加下列配置才能生效

说明:如果Mybatis-plus版本是3.1.1以上的  直接 添加此注解 即可,3.1.1以下版本需要添加如下配置:

# 开启 SQL 解析缓存注解生效
mybatis-plus: global-config: sql-parser-cache: true

参考文档:

1、https://blog.csdn.net/drose29/article/details/103893228

2、https://blog.csdn.net/qq_39313596/article/details/100943090

3、https://mp.baomidou.com/guide/tenant.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2243.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux 修改mysql端口「建议收藏」

    linux 修改mysql端口「建议收藏」1)先关闭MySQL的进程2)更改端口vim/etc/my.cnf添加:port=33083)重启MySQL服务:servicemysqldrestart4)查看MySQL的端口号3.1.登录mysqlmysql-uroot-p3.2.查看当前端口号showglobalvariableslike‘port’;…

    2022年10月3日
    0
  • mongodb的优缺点

    mongodb的优缺点mongodb的优缺点

    2022年4月24日
    37
  • I/O多路复用方案

    1.本节思维导图2.基本的网络编程接口2.1基于TCP的通信模型2.2基于UDP的通信模型3.非阻塞的服务器程序file、pipe、fifo、socket在默认创建过程中都是阻塞的

    2021年12月28日
    49
  • Python Flask,Json,返回Json数据,jsonify

    Python Flask,Json,返回Json数据,jsonify demo.py(返回Json数据):#coding:utf-8fromflaskimportFlask,jsonifyimportjsonapp=Flask(__name__)#第一种方式:手动返回Json字符串@app.route("/index")defindex():data={"name":"pytho…

    2022年5月22日
    34
  • RBF神经网络实验原理_神经网络多元拟合

    RBF神经网络实验原理_神经网络多元拟合RBF神经网络及拟合实例RBF神经网络介绍RBF神经网络结构RBF神经网络算法RBF神经网络逼近算法采用RBF神经网络逼近非线性函数神经网络逼近结果代码如下RBF神经网络介绍RBF神经网络结构径向基函数(RadialBasisFunction,RBF)神经网络是一种单隐含层的三层前馈神经网络,网络结构如下图所示RBF神经网络模拟了人脑中局部调整,相互覆盖接受域(或者说感受域,ReceptiveField)的神经网络结构。与BP神经网络相同,研究人员已经证明RBF神经网络能够以任何精度逼近任

    2025年6月1日
    0
  • mybatis-generator 的坑我都走了一遍_import java.util.Scanner

    mybatis-generator 的坑我都走了一遍_import java.util.Scanner环境​ 使用springboot2,jdk1.8,idea在pom引入相关依赖<!–mybatise-generator–><plugin><groupId

    2022年8月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号