解决SpringBoot整合Mybatis和Mybatis-Plus不能公用(版本兼容性问题)

news2024/12/25 2:36:40

1 前言

虽然Mybatis-Plus很好使,可以帮助我们生成CRUD的接口,但是有的情况下我们需要联合其他表进行多表查询,这时候Mybatis可以手写SQL的优势就体现出来了,一般在开发中,很多项目都是Mybatis和Mybatis-Plus公用的,但是公用也有有版本不兼容的问题

2 发现问题

今天打算使用SpringBoot整合Mybatis和Mybatis-Plus,但是发现不能共同

具体体现为:我手写了一个mapper.xml文件,然后使用接口去调用里面的sql,但是报了一个很经典的问题:

Invalid bound statement (not found): com.wyh.mapper.IUserMapper.queryAllUser

在这里插入图片描述
这个问题很常见。我相信不少后端开发都遇到过,意识是识别不了对应的mapper.xml

常见的发生场景可以参考我这篇文章:解决Mybatis报错并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx

3 分析问题

经过我一行行代码的调试,我敢肯定这个问题的原因不符合上述的任意一种情况

真的是一行行代码删除测试,一个类一个类的改动去测试,这是我的一个实体,去掉相关MP的代码
在这里插入图片描述

最终我定位到:是因为Mybatis和Mybatis-Plus不能公用,我认为是版本不兼容的问题

4 解决问题

如何证明是版本不兼容呢?

这是我报错的时候的依赖版本
在这里插入图片描述
会报错:
在这里插入图片描述

mybatis的版本我没有改动,只是将mybatis-plus的版本从3.1.1提升到了3.3.0

修改完版本后再次运行解决问题
在这里插入图片描述

这时候再把相关Mybatis-Plus的代码还原,哪怕同时编写Mybatis的sql和Mybatis-Plus自带的API都是可以的,没有任何问题

接口和方法名称写的比较糙。。。只是为了方便测试
在这里插入图片描述
在这里插入图片描述

5 Mybatis和Mybatis-Plus的相关依赖:

 		<!--  mybatis依赖    -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <!--  mybatis-plus支持 -->
        <!--  如果想要同时使用mybatis,务必提高mybatis-plus的版本!!!      -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency

6 总结

目前我想到解决这个问题的版本就是提高Mybatis-Plus的版本去支持Mybatis,如果大家有别的办法欢迎评论!

最后不得不感叹:这种问题真的好难发现啊!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Markdowm使用手册

Markdown使用手册 目录Markdown使用手册一、基础语法1.1 书写各级标题1.2 字体加粗/斜体1.2.1 字体加粗1.2.2 字体倾斜1.3 线条使用1.3.1 删除线1.3.2 高亮线1.3.3 下划线二、插入工具2.1 插入代码2.1.1 插入某一行的代码2.1.2 插入整块的代码2.2 插入链接2.3 插入数学公式2.4 …

1546_AURIX_TC275_CPU子系统_指令耗时以及程序存储接口

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这里接触到了几种测试的方式。其中一个是反复执行同一个命令&#xff0c;看看执行之间的间隔。执行的时候&#xff0c;命令是有一定顺序的。这样&#xff0c;有时候流水线等特性会导致效率…

【Java并发入门】03 互斥锁(上):解决原子性问题

原子性问题的源头是线程切换 Q&#xff1a;如果禁用 CPU 线程切换是不是就解决这个问题了&#xff1f; A&#xff1a;单核 CPU 可行&#xff0c;但到了多核 CPU 的时候&#xff0c;有可能是不同的核在处理同一个变量&#xff0c;即便不切换线程&#xff0c;也有问题。 所以&a…

C++代码基本内存操作及原理

文章目录前言操作系统内存地址空间基本数据类型sizeof运算符指针运算内存分配与回收堆与栈malloc/new与free/delete基本类型的指针操作类定义中的内存使用前言 ​ C凭借其指针变量可以直接操作内存而得到了非常高的效率和程序性能&#xff0c;在一种编程语言里独树一帜。当然&…

网络变压器工厂:了解POE POE+ 网络变压器(网络隔离滤波器)

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;这一节给大家分享&#xff1a;POE POE POE 网络变压器(网络滤波器&#xff0c;网络隔离变压器&#xff09;的相关知识--poe poe 与POE简介及相关标准&#xff1b; 一、网络变压器 POE、 POE 与POE简介 POE 是Power …

Day17-购物车页面-收货地址-把address信息存储到vuex中

1.将address信息存储到vuex中&#xff1a; 我的操作&#xff1a; 1》在 store 目录中&#xff0c;创建用户相关的 vuex 模块&#xff0c;命名为 user.js&#xff1a; ①&#xff1a;新建user.js文件 ②&#xff1a;为user.js编写内容 2》在 store/store.js 模块中&#xff0c…

typora安装和配置PicGo图床

typora安装和配置PicGo图床typora安装和配置PicGo图床typora安装安装picgo图床配置picgo图床图床服务器picgo配置七牛云typora安装和配置PicGo图床 typora安装 windows安装typora 参考&#xff1a;https://www.bilibili.com/read/cv19476097/ m1 mac安装typora比较简单&…

数据结构-栈ArrayDeque的实现

优雅&#xff0c;实在是太优雅了 能把复杂的东西简单化就是功底。 我为何有如此感慨&#xff0c;了解ArrayDeque的实现你就知道&#xff0c;今天我们要讲的是以栈为思想而实现的ArrayDeque&#xff0c;我们都知道栈是先进后出&#xff0c;和队列相反&#xff0c;如下图&#x…

二叉树的中序遍历三种解法(递归+迭代+线索化)

文章目录递归迭代线索二叉树解法传送门&#xff1a; 添加链接描述 给你一颗二叉树&#xff0c;让你实现中序的遍历 递归 递归没什么好说的&#xff0c;直接无脑递归即可&#xff0c;时间复杂度&#xff1a;O&#xff08;n&#xff09;&#xff0c;空间复杂度&#xff1a;O&am…

搭建环境AI画图stable-diffusion

目录简介环境准备安装conda(方式1)安装conda&#xff08;方式2&#xff0c;推荐&#xff09;验证conda安装成功安装stable-diffusion的环境简介 本文旨在记录过程&#xff0c;偶然看见一个AI画图的&#xff0c;体验看看。 stable-diffusion是一个输入简单图片&#xff0c;输出…

【Java难点攻克】「Guava RateLimiter」针对于限流器的入门到实战和源码原理分析

限流器的思路和算法 如果让你来造一个限流器&#xff0c;有啥想法&#xff1f; 漏桶算法 用一个固定大小的队列。比如设置限流为5qps&#xff0c;1s可以接受5个请求&#xff1b;那我们就造一个大小为5的队列&#xff0c;如果队列为满了&#xff0c;就拒绝请求&#xff1b;如…

JRebelXRebel的配置和使用(进阶篇)

JRebel&XRebel的配置和使用嘚吧嘚设置JRebel快捷键XRebel使用嘚吧嘚 之前简单介绍了JRebel&XRebel的安装和使用&#xff0c;不了解的朋友可以补补课&#x1f606;。 JRebel&XRebel这款插件不仅仅可以用来热部署&#xff0c;所以继续分享一下这款插件的相关使用&a…

12月2日(第四天)

使用myabtis自动生成的时候&#xff0c;发现xml文件只会merge不会覆盖&#xff0c;这时候需要使用插件&#xff1a; <plugin type"org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />MyBatis Generator配置文件context元素的defaultModelType属性…

封装window10-21H1踩的坑,无法分析或处理pass[specialize]应答文件

最近在研究封装镜像&#xff0c;无奈公司不给用win11&#xff0c;只能封装win10 2022年全新Windows11系统封装图文教程&#xff08;一&#xff09;定制母盘 - 小鱼儿yr系统 (yrxitong.com) 坑1&#xff0c;封装好出现无法分析或处理pass[specialize]应答文件 解决办法&#x…

Java基础:String类、static关键字、Arrays类、Math类

第一章 String类 1.1 String类概述 概述 java.lang.String类代表字符串。Java程序中所有的字符串文字&#xff08;例如"abc"&#xff09;都可以被看作是实现此类的实例。 类String中包括用于检查各个字符串的方法&#xff0c;比如用于比较字符串&#xff0c;搜索…

[附源码]计算机毕业设计JAVA新冠疫苗线上预约系统

[附源码]计算机毕业设计JAVA新冠疫苗线上预约系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

Web3.0 DApp(去中心化应用程序)设计架构

先来回顾下 Web2.0 应用程序架构&#xff0c;一图胜千言&#xff1a; 图示是对大多数 Web 2.0 应用程序如何工作的一个很好的抽象总结。以一个博客平台为例&#xff1a; 首先&#xff0c;必须有一个地方来存储基本数据&#xff0c;也就是数据库&#xff1b; 其次&#xff0c;…

快速串联 RNN / LSTM / Attention / transformer / BERT / GPT(未完待续)

参考&#xff1a; 李宏毅2021/2022春机器学习课程王树森 RNN & Transformer 教程 文章目录0. 背景&#xff1a;序列数据及相关任务1. 早期序列模型1.1 循环神经网络 RNN1.2 长短期记忆网络 LSTM1.3 改善 RNN/LSTM 的三个技巧1.3.1 通过堆叠扩展为深度模型1.3.2 使用双向模…

使用学校的服务器跑深度学习

&#x1f31e;欢迎来到深度学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f320;本阶段属于练气阶段&#xff0c;希望各位仙友顺利完…

原型工具与代码实现的差距及改进设想

背景 最近经常根据墨刀设计的原型开发微信小程序页面&#xff0c;使用的多了总感觉原型只能参考&#xff0c;原型跟代码实现总差一小步。原型中提供的CSS并不能直接复制到代码中&#xff0c;导致编码人员复刻原型设计时总有差距。本文先列举出一些原型和实现的差距&#xff0c;…