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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Centos安装redis_redis编译安装

    Centos安装redis_redis编译安装Centos安装redis61、下载安装包https://redis.io/2、上传安装包到服务器opt下3、解压安装包tar-xzvfredis-6.2.5.tar.gz4、解压安装包重命名mvredis-6.2.5.tar.gzredis5、进入安装包cdredis6、编译检测maketest7、安装makePREFIX=/opt/redis6install8、启动cd/opt/redis6/bin./redis-server#备注:想后台运

  • redis 主从架构(sizeof函数怎么计算)

    一.绪论   Redis的复制功能是基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生。   当Slave启动并连接到Master之后,它将主动发送一个SYNC命令(首先Master会启动一个后台进程,将数据快照保存到文件中[rdb文件]Master会…

  • Java介绍,发展历史,Java语言的优势,Java开发什么软件,Java用到的术语JDK,JRE,JVM等,Java命令Java,javac,javados等

    Java介绍,发展历史,Java语言的优势,Java开发什么软件,Java用到的术语JDK,JRE,JVM等,Java命令Java,javac,javados等1.Java是什么(Java是一种高级语言)2,.Java发展历史以及JDK版本3.java能做什么,可用于开发什么软件。4.Java语言相对于其他语言的优势Java中用到的一些术语(JRE,JDK,JVM)提前检测本机中是否安装好JDK之类的东西可以通过在dos窗口中输入一些指令来完成安装JDK时,先点击运行.exe文件,安装完成后windows+R—->输入cmd——->可在dos窗口输入Java命令来判断是否安装成功,步骤如下图所示。安装成功一般在

  • 几行代码搞定画廊效果

    几行代码搞定画廊效果曲木为直终必弯,养狼当犬看家难。墨染鸬鹚黑不久,粉刷乌鸦白不坚。蜜饯黄莲终需苦,强摘瓜果不能甜。好事总得善人做,哪有凡人做神仙。当!废话不多言,上回书说道,我最近寻思干点嘛,却又无所事事,天天水群,于是心不安理不得,这天忽然看到一个画廊效果,虽然已是过时产物,但是本着劳资不会,就是比比的崇高目标,结果遭人鄙视,无人同情,令人叹惋。于是乎,奋笔疾书,瞎(说鸡不说吧,文明你我他)写,终于

  • Java开发人员必须掌握的两个Linux魔法工具(四)

    子曰:“工欲善其事,必先利其器。“做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开!学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣)的表达来讲解知识或者技术,让学习之旅充满乐趣,这就是写博文的初心。故事旁白:在哈利波特的电影中,每个巫师都有一根自己的魔法棒,魔法棒是用来施展魔法的。而今天我们也要学会使用魔法棒(工具)来施展我们的魔法。魔法地…

  • pycharm设置背景颜色_idea自定义背景颜色

    pycharm设置背景颜色_idea自定义背景颜色pycharm原始的背景是白底黑字或者黑底白字,我都不是很喜欢。我配置的是豆沙绿背景,字还是黑字,效果还不错,这种是比较护眼的。如图:  具体操作如下:File->Settings->Editor->Colors&Fonts->General->Text->Defaulttext然后修改background的颜色,配置如下图:

发表回复

您的电子邮箱地址不会被公开。

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