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

简介: 笔记

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

1.png

这个问题很常见。我相信不少后端开发都遇到过,意思是识别不了对应的mapper.xml


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


3 分析问题


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


真的是一行行代码删除测试,一个类一个类的改动去测试,这是我的一个实体,去掉相关MP的代码

2.png

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


4 解决问题


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

这是我报错的时候的依赖版本

3.png

会报错:

4.png

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

修改完版本后再次运行解决问题

5.png

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

接口和方法名称写的比较糙。。。只是为了方便测试

image.pngimage.png

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,如果大家有别的办法欢迎评论!

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

相关文章
|
10天前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
36 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
10天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
22 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1天前
|
druid Java Maven
|
17天前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
136 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
9天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
14 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
9天前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
27 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
10天前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
11 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
11天前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
6天前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
15 0
|
13天前
|
Java 数据库连接 Maven
Spring整合Mybatis
Spring整合Mybatis