zoukankan      html  css  js  c++  java
  • Spring-Mybatis配置多数据源

    可以参考: http://www.cnblogs.com/ityouknow/p/6102399.html

    需要一个DatabaseConfiguration类,实现 TransactionManagementConfigurer 接口。

    针对每一个数据源的配置主要分为3步:

    1. 配置DataSource

    2.配置创建sqlSessionFactoryBean的方法,来生成对应该数据源的bean

    3.配置mapper(dao)扫描的包

    值得注意的是,该配置类需要制定一个主数据源,一般用@Primary注解

    下面是代码概览:

    /**
     * Created by sonofelice on 17/2/23.
     */
    @Configuration
    @Slf4j
    public class DatabaseConfiguration implements TransactionManagementConfigurer {
    
        /*------------------------ test1 db -------------------------------*/
        @Value("${test1.isEmbedded:true}")
        Boolean test1DatabaseIsEmbedded;
    
        @Value("${test1.database.url:}")
        String test1DatabaseUrl;
    
        @Value("${test1.database.username:}")
        String test1DatabaseUsername;
    
        @Value("${test1.database.password:}")
        String test1DatabasePassword;
    
        @Bean(name = "test1DataSource")
        public DataSource test1DataSource() {
            DataSourceConfig config = new DataSourceConfig()
                                              .withIsEmbedded(test1DatabaseIsEmbedded)
                                              .withDatabaseUrl(test1DatabaseUrl)
                                              .withDatabaseUsername(test1DatabaseUsername)
                                              .withDatabasePassword(test1DatabasePassword);
            return DataSourceGenerator.getDataSource(config);
        }
    
        @Bean(name = "test1SqlSessionFactory")
        public SqlSessionFactoryBean test1SqlSessionFactory() throws Exception {
            return new CustomSqlSessionFactoryBean(test1DataSource());
        }
    
        @Configuration
        @MapperScan(basePackages = "com.test1.mapper.stat",
                sqlSessionFactoryRef = "test1SqlSessionFactory")
        @Primary
        public static class Test1MapperConfiguration {
    
        }
    
        /*------------------------ test2 db -------------------------------*/
        @Value("${test2.database.isEmbedded:true}")
        Boolean test2DatabaseIsEmbedded;
    
        @Value("${test2.database.url:}")
        String test2DatabaseUrl;
    
        @Value("${test2.database.username:}")
        String test2DatabaseUsername;
    
        @Value("${test2.database.password:}")
        String test2DatabasePassword;
    
        @Bean(name = "test2DataSource")
        public DataSource mktDataSource() {
            DataSourceConfig config = new DataSourceConfig()
                                              .withIsEmbedded(test2DatabaseIsEmbedded)
                                              .withDatabaseUrl(test2DatabaseUrl)
                                              .withDatabaseUsername(test2DatabaseUsername)
                                              .withDatabasePassword(test2DatabasePassword);
            return DataSourceGenerator.getDataSource(config);
        }
    
        @Bean(name = "test2SqlSessionFactoryBean")
        public SqlSessionFactoryBean test2SqlSessionFactory() throws Exception {
            return new CustomSqlSessionFactoryBean(test2DataSource());
        }
    
        @Configuration
        @MapperScan(basePackages = "com.test2.mapper.mkt",
                sqlSessionFactoryRef = "test2SqlSessionFactoryBean")
        public static class MktMapperConfiguration {
    
        }
    
    /*------------------------ end --------------------------------*/
    
        @Override
        public PlatformTransactionManager annotationDrivenTransactionManager() {
            return txManager();
        }
    
        public PlatformTransactionManager txManager() {
            return new DataSourceTransactionManager(test2StatDataSource());
        }
    }

    配置好了之后就可以用了。不需要配置xml文件。

  • 相关阅读:
    How to get the IIS root path in other application.
    Web.UI.Controls与页面事件的冲突问题。
    分析在服务器上设置计时器的问题。
    首次感觉我的电脑过时了。。。。。。。。郁闷。
    Google Logos
    2005年的最后一天
    TreeView的几个使用小技
    浅淡反射问题
    The restricted headers are:
    在服务器上用Timer遇到的小问题。。。。
  • 原文地址:https://www.cnblogs.com/sonofelice/p/6435317.html
Copyright © 2011-2022 走看看