Spring Boot 与 MyBatis 版本兼容性

embedded/2025/3/6 2:20:13/

初接触Spring Boot,本次使用Spring Boot版本为3.4.3,mybatis的起步依赖版本为3.0.0,在启动时报错,报错代码如下

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file

 (一)解决方法

1.将 mybatis的起步依赖mybatis-spring-boot-starter版本升级为3.0.3

  <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

2.重新加载Maven项目

 (二)MyBatis的理解

1.MyBatis是什么?

MyBatis 是一款优秀的持久层框架,它通过对象关系映射(ORM)技术,将数据库表与 Java 对象进行映射。它允许开发者手动编写 SQL 语句,同时自动处理 SQL 的执行和结果集的映射。MyBatis 属于半自动化 ORM 框架,因为它需要开发者编写 SQL,但会自动完成对象与数据库的映射。

2.MyBatis的作用

(1)简化数据库操作

MyBatis 免除了几乎所有的 JDBC 代码,包括手动设置参数和获取结果集的工作。通过简单的 XML 或注解配置,可以将 Java 方法与 SQL 语句绑定,从而实现数据库的增删改查操作。

(2)对象关系映射(ORM)

MyBatis 提供了对象与数据库表之间的映射功能,可以将数据库中的记录自动封装成 Java 对象,或者将 Java 对象的数据存储到数据库中。

(3)动态 SQL

MyBatis 支持动态 SQL,可以根据条件动态生成 SQL 查询语句,这使得 SQL 更加灵活。

(4)缓存机制

MyBatis 提供了一级缓存和二级缓存,能够有效提高查询性能。

(5)事务管理

MyBatis 提供了事务管理机制,支持声明式和编程式事务,确保数据库操作的一致性。

3. MyBatis 在 Spring Boot 中的优势

  • 灵活性:开发者可以手动编写 SQL,充分发挥数据库的性能优化能力。

  • 易学易用:相比 Hibernate 等全自动 ORM 框架,MyBatis 更加简洁,容易上手。

  • 与 Spring 集成:MyBatis 与 Spring Boot 集成后,可以利用 Spring 的事务管理和依赖注入功能。

4. MyBatis 的核心组件

在 Spring Boot 中,MyBatis 的核心组件包括:

  • SqlSessionFactory:全局单例,用于创建 SqlSession

  • SqlSession:线程非安全的会话对象,用于执行 SQL 和获取映射器。

  • MapperProxy:动态代理对象,将接口方法调用转换为 SQL 执行。


http://www.ppmy.cn/embedded/170358.html

相关文章

flink集成oracle 19c详解

关键注意事项详解&#xff0c;涵盖配置、性能、兼容性等核心问题&#xff1a; 一、驱动与依赖管理 JDBC 驱动版本选择 必须使用 ojdbc8.jar&#xff08;Oracle 19c 官方推荐与 JDK 8 兼容&#xff09;&#xff0c;避免使用 ojdbc10 或更高版本&#xff08;可能因 Flink 生态兼容…

【每日论文】How far can we go with ImageNet for Text-to-Image generation?

下载PDF或查看论文&#xff0c;请点击&#xff1a;LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 近年来&#xff0c;通过在大规模数据集上训练&#xff0c;文本到图像&#xff08;T2I&#xff09;生成模型已经取得了显著成果&a…

【补充】RustDesk一键部署及账号登录配置

前言 之前分享的配置rustdesk的帖子只是搭建了一个简易服务器&#xff0c;仅能实现简单的远程桌面功能。在后续的使用中切换设备使用时无法看到之前连接的设备&#xff0c;必须知道每个设备的id号&#xff0c;才能在新设备上连接。数据无法在设备间迁移&#xff0c;感觉很麻烦…

物联网感知层常用感应设备

一、环境监测类 温度传感器 ▸ 应用&#xff1a;冷链运输温度监控、智能温室调控 ▸ 技术&#xff1a;热敏电阻、红外测温&#xff08;如TI TMP117&#xff09; 湿度传感器 ▸ 应用&#xff1a;农业大棚湿度控制、工业防潮监测 ▸ 案例&#xff1a;Sensirion SHT4x系列 光照传…

Python测试框架Pytest的参数化

上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不断攀升。 在实际工作中&#xff0c;许多测试用例都是类似的重复&#xff0c;一个个写最后代码会显得很冗余。这里&#xff0c;我们来了解一下pytest.mark.parametrize装饰器&…

一键安装Nginx部署脚本之Linux在线安装Nginx,脚本化自动化执行服务器部署(附执行脚本下载)

相关链接 一键安装Nginx部署脚本之Linux在线安装Nginx一键安装Redis部署脚本之Linux在线安装Redis一键安装Mysql部署脚本之Linux在线安装Mysql一键安装JAVA部署脚本之Linux在线安装JDKXshell客户端免费版无需注册XFtp客户端免费版无需注册 前言 简化服务器部署操作&#xff0…

<Rust><iced>基于rust使用iced构建GUI实例:图片浏览器

前言 本专栏是Rust实例应用。 环境配置 平台:windows软件:vscode语言:rust库:iced、iced_aw概述 本篇将使用iced创建一个图片浏览器,功能是通过导入文件夹,获取其内部图片路径,并在iced窗口程序。iced窗口将有一个主图片显示,主图片下是其余图片的缩略图,有按钮点击…

【实用】nuxt3工程项目的一些目录理解

一、components目录 公共组件目录&#xff0c;不需要像vue2/vue3工程一样&#xff0c;在需要使用的组件内必须手动引入&#xff0c;Nuxt 会自动导入此目录中的任何组件&#xff08;以及您可能正在使用的任何模块注册的组件&#xff09; 使用案例&#xff1a; 在conponents文件…