Spring Boot 整合 MyBatis + 自动配置原理详解

Spring Boot整合mybatis和扩展SpringMVC,整合SpringData JPA 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服务;可以通过HTTP的方式进行互通; 单体应用:ALL IN ONE 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元; 详细参照微服... 阅读详情

一、Spring Boot 整合 MyBatis(完整示例)

1️⃣ pom.xml 依赖配置

<dependencies>
    <!-- Web 起步依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- 测试依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- MyBatis 整合 Spring Boot -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.3.0</version>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Druid 数据源 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.20</version>
    </dependency>
</dependencies>

📌 注意​

  • MySQL 8.x 驱动类应为:

    com.mysql.cj.jdbc.Driver
  • 不建议使用 mysql:mysql-connector-java老版本


2️⃣ application.yml 配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?useSSL=false&serverTimezone=UTC
    username: root
    password: 1111
    type: com.alibaba.druid.pool.DruidDataSource

mybatis:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true

✅ 推荐开启驼峰映射,减少 SQL 字段映射问题。


3️⃣ 启动类配置

@SpringBootApplication
@MapperScan("com.hg.mapper")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

📌 @MapperScan

  • 扫描 Mapper 接口

  • 替代在每个 Mapper 上加 @Mapper


二、Spring Boot 自动配置原理(核心重点)

@SpringBootApplication是一个组合注解,由三部分组成:


1️⃣ @SpringBootConfiguration

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Configuration
public @interface SpringBootConfiguration {}

✅ 本质就是 @Configuration

✅ 标识当前类是一个 Spring 配置类​

✅ 启动类本身也是配置类


2️⃣ @EnableAutoConfiguration(最关键)

@EnableAutoConfiguration
├── @AutoConfigurationPackage
└── @Import(AutoConfigurationImportSelector.class)

✅ ① @AutoConfigurationPackage
@Import(AutoConfigurationPackages.Registrar.class)

🔹 作用:

  • 将 启动类所在包及其子包​ 注册为 Spring 扫描路径

  • 等价于自动完成 @ComponentScan

📌 这也是为什么:

Controller / Service / Mapper 必须放在启动类同级或子包下


✅ ② AutoConfigurationImportSelector(自动配置核心)

📌 核心流程:

  1. 加载

    META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  2. 读取所有 自动配置类

    MybatisAutoConfiguration
    DataSourceAutoConfiguration
    WebMvcAutoConfiguration
    ...
  3. 根据 条件注解​ 决定是否生效


3️⃣ 条件注解(@Conditional 系列)

注解

作用

@ConditionalOnClass

classpath 存在指定类

@ConditionalOnMissingBean

容器中不存在指定 Bean

@ConditionalOnProperty

配置文件中存在指定属性

@ConditionalOnWebApplication

Web 环境

📌 MyBatis 自动配置示例:

@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnMissingBean(DataSource.class)

👉 只要引入 mybatis-spring-boot-starter,并且配置了 datasource,MyBatis 就会自动生效。


4️⃣ @ComponentScan

@ComponentScan

✅ 扫描:

  • @Controller

  • @Service

  • @Repository

  • @Component

✅ 与 @AutoConfigurationPackage配合,完成全量组件扫描


三、MyBatis 自动配置是如何完成的?

简化流程如下:

引入 mybatis-spring-boot-starter
        ↓
MybatisAutoConfiguration 生效
        ↓
读取 application.yml 中的 datasource
        ↓
创建 SqlSessionFactory
        ↓
扫描 Mapper 接口
        ↓
生成 Mapper 代理对象并注入 Spring 容器

📌 这就是为什么:

只写 yml + Mapper 接口就能直接用 MyBatis


四、常见坑点总结(必看)

❌ 启动类位置不对 → Mapper 扫描不到

❌ MySQL 驱动类写错 → 启动报错

❌ yml 缩进错误 → 配置失效

❌ 忘记 @MapperScan→ Mapper 注入失败


五、总结一句话(面试必背)

Spring Boot 自动配置的本质是:通过 @EnableAutoConfiguration加载大量自动配置类,并结合条件注解,在满足条件时自动向 Spring 容器中注册 Bean,从而实现“约定优于配置”。


如果你愿意,我可以继续帮你:

  • ✅ 加 时序图

  • ✅ 加 MyBatis 自动配置源码逐行解析

  • ✅ 改成 面试问答版

  • ✅ 帮你起一个 爆款 优快云 标题

直接告诉我你打算 学习 / 面试 / 发博客​ 用 👍

SpringBoot整合Mybatis详解 SpringBoot整合Mybatis非常简单,下面开始操作! 阅读详情

相关推荐

Spring Boot整合MyBatis全攻略:原理剖析与最佳实践

传统Spring项目中整合MyBatis需要配置大量XML和Bean,而Spring Boot通过自动配置和starter机制,实现了"开箱即用"的MyBatis集成体验。零XML配置:基于注解和Java Config的配置方式自动配置:自动发现DataSource、SqlSessionFactory等简化分页:内置分页插件支持强大扩展:支持通用Mapper、MyBatis-Plus等增强工具Spring Boot与MyBatis的整合为Java开发者提供了高效、灵活的数据访问解决方案。

jnimiijabc的博客 2938

SpringBoot结合MyBatis 【超详细】

Spring Boot与MyBatis框架集合实践。内置MyBatis大部分使用技巧,而Spring Boot起到个快速入门的效果。其中MyBatis内容涉及到业务层与数据访问层的传参知识、企业常用的动态SQL拼接、高级映射及延迟加载、以及缓存机制、最后包括PageHelper分页插件

m0_65563175的博客 12万+

Spring Boot整合MyBatis时@Mapper扫描失效的根源与解决方案

在Java企业级应用开发中,依赖注入和组件扫描是Spring框架的核心机制,它通过控制反转(IoC)容器管理对象的生命周期和依赖关系。其原理是基于注解或XML配置,Spring在启动时会扫描指定路径下的类,识别特定注解(如@Component、@Service、@Repository)并将其注册为Bean。这一机制的技术价值在于实现了松耦合和可测试性,极大提升了开发效率。在数据访问层(DAO)开发场景中,MyBatis作为流行的ORM框架,其Mapper接口需要通过Spring的扫描机制被识别和代理。然而,

weixin_30715523的博客 296

干货必看|Spring Boot整合MyBatis框架详解

Spring Data是Spring提供的一个用于简化数据库访问、支持云服务的开源框架。它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是使我们可以快速且简单地使用各种数据访问技术。Spring Boot默认采用整合Spring Data的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。

一一哥 2万+

Spring Boot+Vue前后端分离商城实战(三)Spring Boot 整合 MyBatis

MyBatis 简介 MyBatis 的前身是 Apache 社区的一个开源项目 iBatis,于2010年更名为 MyBatis。MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,使得开发人员更加关注 SQL 本身和业务逻辑,不用再去花费时间关注整个复杂的 JDBC 操作过程。 以下为 MyBatis 的结构图: MyBatis 的优点如下: 封装了 JDBC 大部分操作,减少开发人员工作量; 相比一些自动化的

程序员有故事 971

matplotlib三维画图之观察博弈论混合策略下纳什均衡点

参考链接: 博弈论入门20讲之第16讲-猜谜游戏-散户如何赢庄家 游戏背景: 我的期望是: 你的期望是: 使用Python的matplotlib画图: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.linspace(0, 1, 100) Y = np.linspace(0, 1,

敲代码的小风 1258

Springboot中mybatis的使用

springboot,mybatis

2301_80224944的博客 2990

修改注册表导致开机时电脑显示“无法登陆到你的账户”的问题解决方案

1.问题描述:开机电脑显示“无法登陆到你的账户:通常可以通过从你的账户注销,然后重新登陆来解决问题,如果不立即注销,你创建的任何文件或进行的任何更改都将会丢失。” 2.问题原因:想要修改cmd中的用户名(红色部分),修改了注册表,重启时出现问题。 3.问题解决: win+R输入cmd,确定进入注册表界面,将下面的地址复制进地址栏(你也可以自己按目录查找),双击ProfileImage...

qq_33835957的博客 7万+

Spring Boot (整合 Mybatis + 自动配置原理)

导包:web、test、mybatis-starter、mysql、druid配数据源:驱动、url、账号密码、连接池配 MyBatis:指定 xml 文件位置启动类加扫描 Mapper 接口封装到自定义注解,更优雅。java运行@MyEnableAutoConfiguration // 使用自定义自动配置注解。

weixin_70426605的博客 283

电商平台大数据分析指标

一、五大关键数据分析指标 1.1活跃用户量 活跃用户量是一个基本的指标,有 DAU(日活跃用户)、WAU(周活跃用户)和 MAU(月活跃用户)三个层次; 1.2转化 转化是一个非常重要的指标,电商运营需要关注主路径、次路径甚至精细到每一个品类 / SKU 的转化率; 1.3留存 留存要从不同的时间周期上研究,包括次日留存率、3 日、7 日、30 日留存; 1.4复购 复购则要从 3 个角度去看,复购用户量、复购率和复购金额比; 1.5GMV GMV 是最重要的指标,我们的运营最终是围绕这

默主归沙的博客 4818

GPU运维面试题

【代码】GPU运维面试题。

u011220233的博客 695

spring-boot 快速构建、热部署、自动配置原理、配置文件、整合SpringMVC、redis、junit、mybatis、打包部署

spring-boot 快速构建、热部署、自动配置原理、配置文件、整合SpringMVC、redis、junit、mybatis、打包部署

weixin_44504809的博客 393

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 810

Java实习模拟面试之框架:Spring、Spring Boot、MyBatis 详解

我在项目中主要使用过 Spring、Spring Boot 和 MyBatis 这三个框架。Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架,它帮助我们实现模块解耦,管理 Bean 的生命周期。是基于 Spring 的快速开发框架,它通过自动配置和起步依赖简化了 Spring 应用的搭建和部署。MyBatis是一个持久层框架,通过 XML 或注解的方式将 Java 对象与 SQL 语句进行映射,简化了数据库操作。这三个框架通常会一起使用,形成一个完整的后端开发体系。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 673

ESP32实战指南:SPI驱动ADXL345三轴加速度传感器的精准数据采集与姿态解算

本文详细介绍了如何使用ESP32通过SPI接口驱动ADXL345三轴加速度传感器,实现精准数据采集与姿态解算。从硬件连接到SPI通信优化,再到数据处理和低功耗策略,提供了全面的实战指南。特别适合物联网开发者和硬件工程师参考,帮助快速掌握传感器数据采集技术。

vim8coder的博客 1042

【生物识别模组介绍】静脉识别模组

静脉识别技术是依据流动的静脉血液中的血红蛋白对近红外光有所吸收,通过近红外光照射手指、手掌、面部、腕部呈现的分布图像,再使用特定的算法对图像进行特征提取、分析比对,从而进行身份认证识别。静脉结构相同几率为34亿分之一,每个人的静脉结构具有独特性,而且静脉特征图像自成年后终身不变,不受外部环境、疾病等影响,是人体最稳定的生物特征之一。商务合作联系:newmagicmission@gmail.com图1.0。

upupDay's blog 899

Spring Boot3零基础教程,Mybatis 自动配置解析,笔记53

Spring Boot3零基础教程,Mybatis 自动配置解析,笔记53

道友 279

基于YOLO26深度学习框架的人脸识别门禁系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的人脸识别门禁系统实现方法。系统采用YOLO26目标检测算法,通过CSPDarknet53主干网络、特征金字塔结构和注意力机制实现高效人脸检测。研究内容包括数据预处理、模型训练优化和身份验证等关键技术,使用迁移学习策略和CIoU损失函数提升检测精度。该系统可应用于智能安防场景,具有实时性强、识别准确的特点,为门禁管理提供了智能化解决方案。

一键难忘的博客 766

Spring Boot搭建、配置、整合、部署、插件

0.目标 Spring Boot 的作用 应用 Spring Boot Yaml 配置文件 了解 Spring Boot 自动配置原理 使用 Spring Boot 整合 SpringMVC 使用 Spring Boot 整合连接池 使用 Spring Boot 整合 Mybatis 使用 Spring Boot 整合 Redis 部署 Spring Boot 项目 1.Spring Boot概述 在这一部分,我们主要了解以下 3 个问题: 1)什么是 Spring Boot 2)为什么要学习 Sprin

weixin_45528849的博客 593

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spring Boot如何整合mybatisplus

MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor。方法postProcessBeanDefinitionRegistry可以修改beanDefinition信息。这里用MybatisSqlSessionFactoryBean来创建sqlSessionFactory。主要为MapperScannerConfigurer定制beanDefinition。打断点到MybatisMapperRegistry。

tobebetter9527的博客 1123

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Springboot学习笔记 3.13(Bean管理+自动配置原理+自定义starter)

很显然,我们在整个业务代码中并没有使用配置文件中的信息,是Springboot自动识别参数并连接的数据库,配置文件中的信息我们一般只管写,不管读,只有特定情况下才需要去读取;mybatis自动配置的实现步骤:1.在autoconfigure模块中,编写配置类,配置类中包含两个Bean对象MyBatis 是一个流行的 Java 持久层框架,它提供了简单的方法将 SQL 查询转换为 Java 对象(Object-Relational Mapping,简称 ORM)。

weixin_50261367的博客 1148

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

后端开发框架Spring Boot快速入门

本文介绍了SpringBoot框架,帮助新手快速入门,主要讲解了Spring Boot 整合Mybatis,Spring Boot常用注解,xml映射文件 ,Bean注册,Bean注册条件,自动配置的原理

qq_56109699的博客 3046

spring boot 整合 mybatis 实现原理

类名作用自动配置类,整合 MyBatis创建 MyBatis 的注册 Mapper 接口扫描器实际执行 Mapper 接口扫描将 Mapper 接口封装为 Spring Bean线程安全的SqlSession,用于执行 SQL。

红血哥 516

Spring Boot与MyBatis整合原理及事务管理:深度解析与实战指南

在Java后端开发中,Spring Boot和MyBatis的组合已成为企业级应用的黄金搭档。Spring Boot简化了配置和开发流程,而MyBatis则提供了灵活的SQL映射能力。但你知道它们是如何无缝协同工作的吗? 本文将深入解析整合原理,特别是事务管理这一核心机制,助你从"会用"到"懂用"。

刘一说的IT专栏 930

Spring Boot集成MyBatis

目录 1.整合Durid数据源 2.整合MyBatis 2.1生成MyBatis代码: 2.2 整合Mybatis 3.MyBatis自动配置原理 1.整合Durid数据源 1、引入Jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc&l

学习笔记 469

SpringBoot MyBatis整合原理源码分析(14)

Spring Boot与MyBatis的整合架构基于MyBatis-Spring项目,通过自动配置机制实现无缝集成。整合后的架构主要包含以下核心组件: 1. **自动配置模块**:基于Spring Boot的自动配置机制,根据类路径下的依赖自动配置MyBatis所需的基础设施。

Android开发领域创作者 864
上一篇: Spring Boot 核心知识点总结
下一篇: Redis 从入门到实战:高并发场景下的缓存利器(一)
StackNoOverflow
博客等级 码龄1年 22粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值