Springboot基础篇(5):自定义 MyBatis Starter

在 Spring Boot 生态中,Starter 是一种非常方便的模块化方式,它可以帮助我们快速集成第三方库或自定义功能。本文将带你一步步实现一个自定义的 MyBatis Starter,并将其发布到 Maven 仓库中,供其他项目使用。

1 什么是 MyBatis Starter?

MyBatis 是一个优秀的持久层框架,而 MyBatis Starter 是 Spring Boot 提供的一个官方 Starter,用于快速集成 MyBatis。通过自定义 Starter,我们可以封装一些通用的 MyBatis 配置、插件或工具类,简化项目的配置和开发。

2 实现目标

我们将实现一个自定义的 MyBatis Starter,包含以下功能:

  1. 自动配置 MyBatis 数据源。
  2. 自动扫描 Mapper 接口。

3 项目结构

4 实现步骤

在实现自定义 MyBatis Starter 的过程中,我们需要完成以下三个主要步骤:

  • 创建 autoconfigure 模块:实现自动配置逻辑。
  • 创建 starter 模块:依赖 autoconfigure 模块,并提供默认配置。
  • 使用自定义 Starter:在其他 Spring Boot 项目中引入并使用自定义 Starter。

4.1 创建autoconfigure

  1. 创建maven项目
    在 pom.xml 中定义项目依赖:
xml 复制代码
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.4.3</version>
    </dependency>
    <!--jdbc-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jdbc</artifactId>
      <version>3.4.3</version>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.14</version>
    </dependency>
    <!--MyBatis与Spring框架集成的桥梁-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>3.0.3</version>
    </dependency>
  1. 实现自动配置类
java 复制代码
@AutoConfiguration
public class MybatisAutoConfig {
    @Bean
    // 自动配置 MyBatis 数据源。
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
        // 创建一个SqlSessionFactoryBean对象
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        // 设置数据源
        sqlSessionFactoryBean.setDataSource(dataSource);
        // 返回SqlSessionFactoryBean对象
        return sqlSessionFactoryBean;
    }
    @Bean
    // 自动扫描 Mapper 接口。
    public MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory) {
        // 创建一个MapperScannerConfigurer对象
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        // 获取自动配置的包列表
        List<String> basePackages = AutoConfigurationPackages.get(beanFactory);
        // 设置MapperScannerConfigurer的基础包
        mapperScannerConfigurer.setBasePackage(basePackages.get(0));
        // 设置MapperScannerConfigurer的注解类
        mapperScannerConfigurer.setAnnotationClass(Mapper.class);
        // 返回MapperScannerConfigurer对象
        return mapperScannerConfigurer;
    }
}
  1. 注册自动配置
  2. 打包:使用以下命令将项目打包并发布到 Maven 仓库:
bash 复制代码
mvn clean install

4.2 创建starter

  1. 创建Maven项目
  2. 定义项目依赖
yaml 复制代码
  <dependency>
      <groupId>com.wfs</groupId>
      <artifactId>wmybatis-spring-boot-autoconfigure</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.4.3</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jdbc</artifactId>
      <version>3.4.3</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.14</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>3.0.3</version>
    </dependency>
  1. 打包至maven仓库

4.3 使用自定义 Starter

  1. 在其他 Spring Boot 项目中引入自定义 Starter(该项目详细描述情请看:Springboot基础篇(2):SpringBoot整合Mybatis):
  1. 效果图
相关推荐
倚肆5 分钟前
MyBatis-Plus Mapper 接口方法详解
java·mybatis
n***78686 分钟前
SpringBoot详解
java·spring boot·后端
星释12 分钟前
Rust 练习册 96:Rectangles与几何计算
开发语言·后端·rust
JIngJaneIL14 分钟前
农产品电商|基于SprinBoot+vue的农产品电商系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·农产品电商系统
切糕师学AI16 分钟前
Spring 是什么?
java·后端·spring
v***885618 分钟前
SpringBoot集成Flink-CDC,实现对数据库数据的监听
数据库·spring boot·flink
老神在在00118 分钟前
Mybatis01
后端·学习·spring·java-ee·mybatis
c***727420 分钟前
SpringBoot + vue 管理系统
vue.js·spring boot·后端
爱笑的源码基地20 分钟前
医院随访管理系统源码 患者随访管理系统源码 智能随访系统源码 出院随访系统源码,基于Java+Vue前后端分离架构
java·spring boot·源码·二次开发·源代码管理·随访系统·医院随访
q***235722 分钟前
配置MyBatis-Plus打印执行的 SQL 语句到控制台或日志文件中
数据库·sql·mybatis