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

MyBatis-Spring-Boot快速上手指南

以下内容是关于 MyBatis-Spring-Boot-Starter 的官方文档或技术说明。下面我将用中文为你详细解释这个工具是什么、它的作用、如何使用,以及关键概念的通俗理解。


一、什么是 MyBatis-Spring-Boot-Starter?

简单来说:

MyBatis-Spring-Boot-Starter 是一个“启动器”(Starter),它让 Spring Boot 项目可以非常方便地集成 MyBatis 框架来操作数据库。

✅ 核心目标:

  • 快速搭建基于 Spring Boot 的 MyBatis 应用。
  • 减少配置(几乎不需要写 XML)。
  • 实现 自动装配(Auto-configuration),像魔法一样帮你把 MyBatis 的组件准备好。

二、它能帮你做什么?(好处)

使用这个 Starter 后,Spring Boot 会自动完成以下事情:

功能说明
🔍 自动检测数据源只要你在 application.yml 配置了数据库连接,它就能找到 DataSource
🏗️ 创建 SqlSessionFactory不用手动 new 一个 SqlSessionFactoryBean
💾 创建 SqlSessionTemplate线程安全的 MyBatis 操作模板
🧩 自动扫描 Mapper 接口扫描所有 @Mapper 注解的接口,并注册为 Spring Bean
⚙️ 减少 XML 配置大部分配置可以通过 application.properties 或 Java 代码完成

👉 结果:你只需要写一个 Mapper 接口 + SQL,就可以直接在 Service 中注入使用!


三、快速上手示例(看懂就够了)

1. 添加依赖(Maven)

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

2. 写一个 Mapper 接口

@Mapper
public interface CityMapper {@Select("SELECT * FROM CITY WHERE state = #{state}")City findByState(@Param("state") String state);
}

3. 在主类中使用(自动注入)

@SpringBootApplication
public class SampleMybatisApplication implements CommandLineRunner {private final CityMapper cityMapper;public SampleMybatisApplication(CityMapper cityMapper) {this.cityMapper = cityMapper;}public static void main(String[] args) {SpringApplication.run(SampleMybatisApplication.class, args);}@Overridepublic void run(String... args) {System.out.println(cityMapper.findByState("CA")); // 直接调用!}
}

不需要任何 XML 配置!Spring Boot 自动帮你完成了所有底层设置。


四、核心机制详解(进阶理解)

1. 自动扫描 Mapper 的原理

  • 默认情况下,它会查找所有加了 @Mapper 的接口,并将其注册为 Spring Bean。
  • 如果你想自定义扫描路径或使用别的注解,可以用 @MapperScan
@SpringBootApplication
@MapperScan("com.example.mapper") // 指定包路径
public class App { ... }

2. 使用 SqlSession 手动操作(不推荐常用)

虽然推荐用 Mapper 接口,但你也可以直接使用 SqlSession

@Component
public class CityDao {private final SqlSession sqlSession;public CityDao(SqlSession sqlSession) {this.sqlSession = sqlSession;}public City selectCityById(long id) {return sqlSession.selectOne("selectCityById", id);}
}

这种方式更接近原生 MyBatis,但失去了接口的类型安全和简洁性。


五、配置项详解(application.yml

MyBatis 的配置都以 mybatis. 开头:

mybatis:type-aliases-package: com.example.domain.model   # 别名包,不用写全类名type-handlers-package: com.example.typehandler   # 类型处理器mapper-locations: classpath:mapper/*.xml         # XML 映射文件位置configuration:map-underscore-to-camel-case: true           # 下划线转驼峰命名default-fetch-size: 100default-statement-timeout: 30

常见配置说明:

配置项作用
type-aliases-package简化实体类别名,比如 User 代替 com.example.User
mapper-locations指定 XML 映射文件的位置(如 <select> 写在 XML 里)
map-underscore-to-camel-case数据库字段 user_name → Java 属性 userName
configuration.*直接设置 MyBatis 核心配置

⚠️ 注意:如果用了 config-location(指定 mybatis-config.xml 文件),就不能再用 configuration.*,两者冲突。


六、高级功能(可选了解)

1. 使用 ConfigurationCustomizer 自定义配置

如果你想在自动配置的基础上修改 MyBatis 行为,可以用这个接口:

@Bean
public ConfigurationCustomizer configurationCustomizer() {return configuration -> {configuration.setLazyLoadingEnabled(true); // 开启懒加载configuration.setAggressiveLazyLoading(false);};
}

这比写 XML 更灵活,适合动态配置。


2. 使用 SqlSessionFactoryBeanCustomizer

用于定制 SqlSessionFactoryBean 对象本身(比如设置插件、VFS 等)。

@Bean
public SqlSessionFactoryBeanCustomizer customizer() {return factoryBean -> {factoryBean.setPlugins(new MyInterceptor()); // 添加拦截器};
}

3. 使用 SpringBootVFS(重要!打包时要用)

当你把项目打成 jar 包运行时,MyBatis 默认的类加载机制可能找不到 Mapper 接口或 XML 文件。

解决办法:使用 SpringBootVFS

factoryBean.setVfs(SpringBootVFS.class); // 告诉 MyBatis 用 Spring Boot 的方式找文件

Starter 已经自动帮你设置了,但如果你手动创建多个 SqlSessionFactory(比如多数据源),就需要自己加上这一句。


七、版本兼容性(重点!别用错)

Starter 版本Spring Boot 版本Java 版本
3.0.x3.0 - 3.417+
2.3.x2.78+
2.2.x2.5 - 2.78+
1.x1.3 - 2.16+

注意: 你的 Spring Boot 版本必须和 Starter 匹配,否则会报错!

例如:

  • 你用的是 Spring Boot 3.0+ → 必须用 mybatis-spring-boot-starter:3.0.4
  • 你还用 Java 8 → 不能用 3.x 版本(需要 Java 17+)

八、总结:一句话理解

MyBatis-Spring-Boot-Starter 就像一个“快捷安装包”,让你在 Spring Boot 项目中只需写 Mapper 接口和 SQL,剩下的(数据源、工厂、会话、扫描)全部自动搞定,真正做到开箱即用。


九、适合人群

人群是否推荐
Spring Boot 新手✅ 推荐!简单易上手
想摆脱 XML 配置的人✅ 强烈推荐
需要多数据源、复杂配置的项目✅ 可用,但需结合手动配置
坚持用 XML 写 SQL 的团队✅ 也支持,通过 mapper-locations

如果你正在做一个 Spring Boot + MyBatis 的项目,强烈建议使用 mybatis-spring-boot-starter,它可以极大提升开发效率,减少出错概率。

需要我根据你的项目结构生成具体配置示例吗?欢迎提供 Spring Boot 版本和需求 😊

http://www.dtcms.com/a/469228.html

相关文章:

  • Linux运维实战:系统及服务管理(视频教程)
  • 服务器运维(四)服务器漏洞扫描工具与审查——东方仙化神期
  • SolidWorks服务器多人使用方案
  • 安卓手机app开发软件下载网站关键词优化效果
  • Redis中的RPOP、BRPOP、LPOP 和 BLPOP
  • R语言学习
  • 【C++】C++11 新特性详解(下)
  • 成都市公园城市建设管理局网站济南百度推广开户
  • 网站的技术建设公司网站建设 wordpress
  • 联想小新平板Pro GT/Y700四代平板无需解锁BL获取root权限方法
  • Linux系统安装PGSQL实现向量存储
  • 跨语言协作新范式:阿里云Qwen-MT与DooTask的翻译技术突破
  • LLM 笔记 —— 04 为什么语言模型用文字接龙,图片模型不用像素接龙呢?
  • ubuntu-20.04.6升级OpenSSH_10.2p1
  • redis lua脚本(go)调用教程以及debug调试
  • shopnc本地生活o2o网站源码有声小说网站开发
  • OpenHarmony 之Telephony电话服务技术详解:架构设计与Modem厂商库集成机制
  • 医疗AI记忆系统的分层存储机制:长期病史与短期会诊记忆的编程实现(代码部分)
  • Vue 基础认知全解析:从版本演进到生态定位
  • 苏州建网站的公司平台收费标准wordpress客户端源码分析
  • VibeCut - 智能剪辑探索与实现
  • Linux5:Linux网络编程
  • 大模型为什么会表现出逻辑性推理
  • 除了MySQL连接命令,实现自动化备份还需哪些步骤?
  • 【GD32】硬件I2C
  • 光学影像“精准导航”交叉导轨的关键作用
  • 四川省城乡住房和城乡建设厅网站注册个人订阅号
  • Linux 进程通信——基于建造者模式的信号量
  • 在Mac上安装CocoaPods问题处理
  • 深入 Spring 条件化配置底层:从硬编码到通用注解的实现原理