• Spring Boot MyBatis Plus 配置数据源详解



    在这里插入图片描述

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



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

    在这里插入图片描述

    1. 引入 MyBatis Plus 依赖

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

    
    <dependency>
        <groupId>com.baomidougroupId>
        <artifactId>mybatis-plus-boot-starterartifactId>
        <version>3.4.3.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    2. 数据源配置

    在Spring Boot中,数据源的配置通常位于application.propertiesapplication.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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这个配置中,我们指定了数据库的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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    在这个配置类中,我们使用@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<String> CONTEXT_HOLDER = new ThreadLocal<>();
    
        public DynamicDataSource(DataSource defaultDataSource, Map<Object, Object> 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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

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

    5. 小结

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

    在这里插入图片描述

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


    🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
    📜您可能感兴趣的内容:

    在这里插入图片描述

  • 相关阅读:
    day42 cmd下数据库操作库表数据sql语句
    【快手小玩法-弹幕游戏】开发者功能测试报告提交模板
    Excel文件的操作
    Burpsuite抓HTTPS证书导入问题
    Android 系统架构
    用 k8s+Ingress+Traefik 搭建一个外网可以访问的 Web 服务
    大规模语言模型人类反馈对齐--RLHF
    flyway的学习
    反射学习总结
    重绘与重排(回流)
  • 原文地址:https://blog.csdn.net/qq_43546721/article/details/134395229