相关推荐recommended
Spring Boot MyBatis Plus 配置数据源详解
作者:mmseoamin日期:2024-01-23

文章目录

    • 1. 引入 MyBatis Plus 依赖
    • 2. 数据源配置
    • 3. MyBatis Plus 配置
    • 4. 动态数据源配置(多数据源)
    • 5. 小结

      Spring Boot MyBatis Plus 配置数据源详解,在这里插入图片描述,第1张

      🎉欢迎来到架构设计专栏~Spring Boot MyBatis Plus 配置数据源详解


      • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
      • ✨博客主页:IT·陈寒的博客
      • 🎈该系列文章专栏:架构设计
      • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
      • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
      • 📜 欢迎大家关注! ❤️

      Spring Boot与MyBatis Plus的结合,为Java开发者提供了一种简便而高效的持久化解决方案。其中,数据源配置是整合过程中的重要一环。本文将深入探讨如何在Spring Boot项目中配置MyBatis Plus所使用的数据源,以及一些相关的拓展和分析。

      Spring Boot MyBatis Plus 配置数据源详解,在这里插入图片描述,第2张

      1. 引入 MyBatis Plus 依赖

      首先,在pom.xml中引入MyBatis Plus的相关依赖:

      
      
          com.baomidou
          mybatis-plus-boot-starter
          3.4.3.1
      
      

      这个依赖将自动导入MyBatis Plus所需的其他依赖,简化了项目的配置。

      2. 数据源配置

      在Spring Boot中,数据源的配置通常位于application.properties或application.yml文件中。下面是一个简单的数据源配置示例:

      # 数据源配置
      spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
      spring.datasource.username=root
      spring.datasource.password=password
      spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
      # 连接池配置(可选)
      spring.datasource.hikari.maximum-pool-size=10
      

      在这个配置中,我们指定了数据库的URL、用户名、密码和驱动类。如果你希望使用连接池,可以添加连接池的相关配置,这里以Hikari连接池为例。

      3. MyBatis Plus 配置

      MyBatis Plus的配置通常需要继承MybatisPlusConfigurerAdapter类,并通过@Configuration注解标记为配置类。以下是一个简单的配置示例:

      import com.baomidou.mybatisplus.annotation.DbType;
      import com.baomidou.mybatisplus.core.MybatisConfiguration;
      import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
      import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
      import org.apache.ibatis.plugin.Interceptor;
      import org.apache.ibatis.session.SqlSessionFactory;
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.core.io.DefaultResourceLoader;
      import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
      import javax.sql.DataSource;
      @Configuration
      @MapperScan("com.example.mapper") // 扫描 Mapper 接口所在的包
      public class MybatisPlusConfig {
          @Bean
          public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(DataSource dataSource) throws Exception {
              MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
              sessionFactoryBean.setDataSource(dataSource);
              sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/*.xml"));
              sessionFactoryBean.setConfiguration(mybatisConfiguration());
              sessionFactoryBean.setPlugins(new Interceptor[]{paginationInterceptor()});
              return sessionFactoryBean;
          }
          @Bean
          public PaginationInterceptor paginationInterceptor() {
              return new PaginationInterceptor();
          }
          private MybatisConfiguration mybatisConfiguration() {
              MybatisConfiguration configuration = new MybatisConfiguration();
              configuration.setMapUnderscoreToCamelCase(true);
              configuration.setCacheEnabled(false);
              return configuration;
          }
      }
      

      在这个配置类中,我们使用@MapperScan注解指定了Mapper接口的扫描路径,并通过@Bean注解配置了MybatisSqlSessionFactoryBean。此外,我们还配置了分页插件PaginationInterceptor以及一些MyBatis的基本配置,比如下划线转驼峰、关闭缓存等。

      4. 动态数据源配置(多数据源)

      在一些复杂的项目中,可能需要配置多个数据源以满足不同业务需求。Spring Boot通过AbstractRoutingDataSource提供了动态数据源的支持。以下是一个简单的多数据源配置示例:

      import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
      import javax.sql.DataSource;
      import java.util.HashMap;
      import java.util.Map;
      public class DynamicDataSource extends AbstractRoutingDataSource {
          private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>();
          public DynamicDataSource(DataSource defaultDataSource, Map targetDataSources) {
              super.setDefaultTargetDataSource(defaultDataSource);
              super.setTargetDataSources(new HashMap<>(targetDataSources));
             
       super.afterPropertiesSet();
          }
          public static void setDataSource(String dataSourceKey) {
              CONTEXT_HOLDER.set(dataSourceKey);
          }
          public static String getDataSource() {
              return CONTEXT_HOLDER.get();
          }
          public static void clearDataSource() {
              CONTEXT_HOLDER.remove();
          }
          @Override
          protected Object determineCurrentLookupKey() {
              return getDataSource();
          }
      }
      

      上述代码中,我们继承了AbstractRoutingDataSource,并通过ThreadLocal来保存当前数据源的key。在具体的业务中,通过调用DynamicDataSource.setDataSource("dataSourceKey")来切换数据源。

      5. 小结

      通过以上步骤,我们完成了在Spring Boot项目中配置MyBatis Plus数据源的过程。首先引入MyBatis Plus的相关依赖,然后在application.properties或application.yml中配置数据源,接着通过一个配置类进行MyBatis Plus的相关配置。最后,如果需要多数据源支持,可以使用AbstractRoutingDataSource实现动态数据源的切换。

      Spring Boot MyBatis Plus 配置数据源详解,在这里插入图片描述,第3张

      在实际项目中,根据具体的业务需求,可能还需要更详细的配置和优化。希望本文的内容对你在Spring Boot项目中使用MyBatis Plus提供一些帮助。


      🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏

      📜您可能感兴趣的内容:

      • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
      • 【Java学习路线】2023年完整版Java学习路线图
      • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
      • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
      • 【数据结构学习】从零起步:学习数据结构的完整路径

        Spring Boot MyBatis Plus 配置数据源详解,在这里插入图片描述,第4张