• springboot mybatis 多数据源配置支持切换以及一些坑


    一 添加每个数据源的config配置,单个直接默认,多个需要显示写出来

    @Configuration
    @MapperScan(basePackages ="com.zhuzher.*.mapper", sqlSessionTemplateRef  = "crmSqlSessionTemplate")
    public class CrmDataSourceConfig {
        @Bean(name = "crmData")
        @ConfigurationProperties(prefix = "spring.datasource.crm") // application.properteis中对应属性的前缀
        @Primary
        public DataSource crmDataSourceConfig() {
            return DataSourceBuilder.create().build();
        }
    
    
        @Bean(name = "crmSqlSessionFactory")
        @Primary
        public SqlSessionFactory crmSqlSessionFactory() throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(crmDataSourceConfig());
            //这段代码必须要,否则不会识别xml
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappings/*.xml"));
            return bean.getObject();
        }
    
        @Bean(name = "crmSqlSessionTemplate")
        @Primary
        public SqlSessionTemplate crmSqlSessionTemplate() throws Exception {
            return new SqlSessionTemplate(crmSqlSessionFactory());
        }
    }
    @Primary 表示默认的,必须且指定一个,mapper位置也要对应放在不同位置,利用不同的mapper请求不同的数据源数据
    二 属性文件配置多个数据源,对应config文件中前缀

    三 接口引用不同mapper请求不同数据源数据

    四 坑

    1 url需要使用jdbc-url

    2 xml位置需要在每个config显示置顶位置

    3 一定要指定一个默认的数据源,用注解

    @Primary
  • 相关阅读:
    A query was run and no Result Maps were found for the Mapped Statement 'com.demo.dao.UserDao.check'. It's likely that neither a Result Type nor a Result Map was specified.
    layui监听input内容变动简单粗暴
    Java多线程中
    Java 对象内存分析
    MySQL重做日志
    并查集-Java实现
    java虚拟机类加载机制
    Java的23种设计模式概述
    redo log 有什么作用?
    什么是redo log ?
  • 原文地址:https://www.cnblogs.com/houzheng/p/11767191.html
Copyright © 2020-2023  润新知