当前位置: 首页 > news >正文

Spring Boot 与 MyBatis 版本兼容性

初接触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.lryc.cn/news/545927.html

相关文章:

  • 《 C++ 点滴漫谈: 二十九 》风格 vs. C++ 风格:类型转换的对决与取舍
  • AI预测福彩3D新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月3日第11弹
  • ArcGIS Pro高级应用:高效生成TIN地形模型
  • 【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元
  • OpenWebUI提示器:Prompt工程的“智能助手”还是“自动化革命”?
  • Spring Boot 异步编程深入剖析
  • 使用pyinstaller和tinyaes,对加密文件文件源码进行打包
  • 分布式和微服务的理解
  • 麒麟V10-SP2-x86_64架构系统下通过KVM创建虚拟机及配置虚机的NAT、Bridge两种网络模式全过程
  • watchEffect的用法
  • 第15届 蓝桥杯 C++编程青少组中级省赛 202408 真题答案及解析
  • 扫描纸质文件转pdf---少页数+手机+电脑协作
  • 大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘
  • 运维实战---多种方式在Linux中部署并初始化MySQL
  • SQL注入攻击
  • 面试常问的压力测试问题
  • 云原生事件驱动架构:构建实时响应的数字化神经系统
  • css3d放置的面板方向不对问题排查
  • K8S学习之基础七:k8s中node污点和pod容忍度
  • python流水线自动化项目教程
  • 机器学习算法——分类任务
  • AJAX复习记录
  • 内网穿透的应用-企业级远程办公方案:NAS部署网页版Linux,HTTPS加密访问全配置
  • 《白帽子讲 Web 安全》之移动 Web 安全
  • CSS_复合选择器
  • 测试工程师Ai应用实战指南简例prompt
  • 贪心人生,贪心算法
  • 【论文阅读笔记】用于恶劣天气条件下的目标检测的IA-YOLO(Image-Adaptive YOLO) | 适合雾天和低光照场景
  • 【Elasticsearch】Set up a data stream 创建data stream
  • redhat无网利用iso搭建本地yum源