博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
016,spring boot集成Mybatis之多数据源
阅读量:7115 次
发布时间:2019-06-28

本文共 3041 字,大约阅读时间需要 10 分钟。

hot3.png

一、添加依赖

<!--mybatis-->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.1.1</version>

</dependency>

 

<dependency>

            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

 

二、application.properties 添加配置:

datasource.datasourceA.url=jdbc:mysql://localhost:3306/test
datasource.datasourceA.username=root
datasource.datasourceA.password=open123
datasource.datasourceA.driver-class-name=com.mysql.jdbc.Driver
datasource.datasourceA.max-idle=10
datasource.datasourceA.max-wait=10000
datasource.datasourceA.min-idle=5
datasource.datasourceA.initial-size=5
datasource.datasourceA.validation-query=SELECT 1
datasource.datasourceA.test-on-borrow=false
datasource.datasourceA.test-while-idle=true
datasource.datasourceA.time-between-eviction-runs-millis=18800

datasource.datasourceB.url=jdbc:mysql://localhost:3306/test_fun

datasource.datasourceB.username=root
datasource.datasourceB.password=open123
datasource.datasourceB.driver-class-name=com.mysql.jdbc.Driver
datasource.datasourceB.max-idle=10
datasource.datasourceB.max-wait=10000
datasource.datasourceB.min-idle=5
datasource.datasourceB.initial-size=5
datasource.datasourceB.validation-query=SELECT 1
datasource.datasourceB.test-on-borrow=false
datasource.datasourceB.test-while-idle=true
datasource.datasourceB.time-between-eviction-runs-millis=18800

 

三、数据源配置(只列举一个,另一个类似)

@Configuration

public class DatasourceAConfig {
    
    /***
     * 有什么作用呢?
     * 简单地说,当有两个同一类型的Bean,依赖注入时你没有指定name,正常情况下会报错,有两个你要的Bean,识别不了。
     * 但是 相当于指定这个Bean为默认的,如果你没有指定name,就采用 标识的Bean。
     * **/
   
    @Bean(name = "datasourceA")
    @ConfigurationProperties(prefix = "datasource.datasourceA")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary

    @Bean(name = "datasourceATransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("datasourceA") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
 }

 

四,Mapper配置(只列举一个,另一个类似)

@Configuration

@MapperScan(basePackages = {"com.example.source.source_a"}, sqlSessionFactoryRef = "datasourceASqlSessionFactory")
public class MapperAConfig {
    
    @Primary
    @Bean(name = "datasourceASqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("datasourceA") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.example.source.source_a.model");

        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

        
        factoryBean.setMapperLocations(resolver
                .getResources("classpath*:com/example/source/source_a/mapper/**/*.xml"));
        
        return factoryBean.getObject();
    }
 }

 

五、给Mapper添加别名,以防止命名冲突:

@Repository(value="userMapperA")

public interface UserMapper {

        .......

}

 

六、使用:

    @Autowired   

    private UserMapper userMapper;

 

注意:一般情况下,各个数据源 其bean mapper dao 配置的路径是不同的,所以 在dao的引入过程中,引入的类的路径 就决定了 自动装配时 用的 数据源种类

 

转载于:https://my.oschina.net/tinglanrmb32/blog/800629

你可能感兴趣的文章
装饰模式(Decorator) ...
查看>>
[Android] ImageView.ScaleType设置图解
查看>>
解决IE8不兼容 background-size
查看>>
Ubuntu中Samba的安装配置和使用
查看>>
代码简单混淆
查看>>
[ios5 cocos2d游戏开发实战] 笔记1
查看>>
3种方法教你PS快速去掉水印
查看>>
ThinkCMF----调用指定栏目的文章列表
查看>>
还不错的MUI技术文档
查看>>
远程桌面能连接到服务器,但PING不通
查看>>
在 Windows Azure 上设计大型服务的最佳做法
查看>>
C++继承
查看>>
2015.7个人反思小结以及兴许规划
查看>>
云端数据遭觊觎 安全问题不容忽视
查看>>
编译gaia
查看>>
如何识别真Microsoft服务与非Microsoft服务来定位病毒自己的服务
查看>>
大数据之路- Hadoop环境搭建(Linux)
查看>>
解决问题:保存图片到本地文件夹后,在图库里看不到保存的图片问题。
查看>>
Android 源码分析(八) Launcher 桌面启动App过程
查看>>
BFS--POJ 1979
查看>>