springboot mybatis多数据源配置

根据一个项目需求对数据进行转换,从一个数据库中读取数据,经过转换处理后转到另外一个数据库中。故考虑用到多数据源配置
github地址
application.properties

server.port=8082

# editor数据源
spring.datasource.editor.name=test
spring.datasource.editor.driverClassName = org.postgresql.Driver
spring.datasource.editor.jdbcUrl=jdbc:postgresql://127.0.0.1:5432/test
spring.datasource.editor.username=postgres
spring.datasource.editor.password=xxx

# xd数据源
spring.datasource.xd.name=test1
spring.datasource.xd.jdbcUrl=jdbc:postgresql://127.0.0.1:5432/test1
spring.datasource.xd.driverClassName = org.postgresql.Driver
spring.datasource.xd.username=postgres
spring.datasource.xd.password=xxx

mybatis.mapper-locations=classpath:com.threestone.dao/mapping/**/*.xml
mybatis.type-aliases-package=com.threestone.model
mybatis.type-handlers-package=com.threestone.common.mybatisTypeHandler

禁止spring自动加载数据库配置,在启动类上加上如下代码

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})

我们工程的结构如下图
在这里插入图片描述
禁止后需要加上自定义的数据库配置
主数据源配置类
EditorDataSourceConfig.java

@Configuration
@MapperScan(basePackages = "com.threestone.dao.editor",sqlSessionFactoryRef = "editorSqlSessionFactory")
public class EditorDataSourceConfig {
    @Primary
    @Bean(name = "editorDataSource")
    @ConfigurationProperties("spring.datasource.editor")
    public DataSource masterDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "editorSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("editorDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:**/dao/mapping/editor/*.xml"));
        return sessionFactoryBean.getObject();
    }
}

次数据源配置类
XDDataSourceConfig.java

@Configuration
@MapperScan(basePackages = "com.threestone.dao.xd",sqlSessionFactoryRef = "xdSqlSessionFactory")
public class XDDataSourceConfig {
    @Primary
    @Bean(name = "xdDataSource")
    @ConfigurationProperties("spring.datasource.xd")
    public DataSource masterDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "xdSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("xdDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:**/dao/mapping/xd/*.xml"));
        return sessionFactoryBean.getObject();
    }
}

根据我们自己定义的xml地址和dao文件地址将相应文件放到相应目录中,参照上图中的项目结构。

水平有限,如有不正确的地方欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值