千家信息网

springboot怎么连接两个数据库

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇"springboot怎么连接两个数据库"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看
千家信息网最后更新 2025年02月23日springboot怎么连接两个数据库

这篇"springboot怎么连接两个数据库"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"springboot怎么连接两个数据库"文章吧。

一、启动类

1.启动类需要不用加mybatis的@MapperScan注解

@SpringBootApplicationpublic class AppPush {    public static void main(String[] args) {        SpringApplication.run(AppPush.class,args);    }}

二、application.yml文件

配置俩个或多个数据库连接,我这里用的是postgresql,用mysql等也是一样

spring:  datasource:#    driver-class-name: org.postgresql.Driver#    url: jdbc:postgresql://127.0.0.1/aaa#    username: root#    password: root      one:        driver-class-name: org.postgresql.Driver        url: jdbc:postgresql://127.0.0.1/aaa        username: root        password: root      two:        driver-class-name: org.postgresql.Driver        url: jdbc:postgresql://127.0.0.1/bbb        username: root        password: root

三、创建配置类

1.注意:@MapperScan 的basePackages就是你包的路径 ,

sqlSessionFactoryRef 可以随便起名 但是着两个类不能重复!

One配置类

package com.wys.config;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DriverManagerDataSource;import javax.sql.DataSource;/** * @program:   * @description: 数据库配置1 * @author: wys * @create: 2019-12-03 16:20 **/@Configuration@MapperScan(basePackages = "com.wys.mapper.**", sqlSessionFactoryRef = "oneSqlSessionFactory")public class OneDataSourceConfig {    @Value("${spring.datasource.one.driver-class-name}")    String driverClass;    @Value("${spring.datasource.one.url}")    String url;    @Value("${spring.datasource.one.username}")    String userName;    @Value("${spring.datasource.one.password}")    String passWord;    @Primary    @Bean(name = "oneDataSource")    @ConfigurationProperties("spring.datasource.one")    public DataSource masterDataSource() {        DriverManagerDataSource dataSource = new DriverManagerDataSource();        dataSource.setDriverClassName(driverClass);        dataSource.setUrl(url);        dataSource.setUsername(userName);        dataSource.setPassword(passWord);        return dataSource;    }    @Bean(name = "oneSqlSessionFactory")    public SqlSessionFactory sqlSessionFactory(@Qualifier("oneDataSource") DataSource dataSource) throws Exception {        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();        sessionFactoryBean.setDataSource(dataSource);        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()                .getResources("classpath:mybatis/mapper-postgre/*.xml"));                return sessionFactoryBean.getObject();    }    @Bean(name = "oneSqlSessionTemplate")    public SqlSessionTemplate sqlSessionFactoryTemplate(@Qualifier("oneSqlSessionFactory")SqlSessionFactory sqlSessionFactory ) throws Exception {        return new SqlSessionTemplate(sqlSessionFactory);    }}

Two配置类

package com.wys.config;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DriverManagerDataSource;import javax.sql.DataSource;/** * @program:   * @description: 数据库配置2 * @author: wys * @create: 2019-12-03 17:03 **/@Configuration@MapperScan(basePackages = "com.wys.mappers",sqlSessionFactoryRef = "twoSqlSessionFactory")public class TwoDataSourceConfig {    @Value("${spring.datasource.two.driver-class-name}")    String driverClass;    @Value("${spring.datasource.two.url}")    String url;    @Value("${spring.datasource.two.username}")    String userName;    @Value("${spring.datasource.two.password}")    String passWord;        @Bean(name = "twoDataSource")    @ConfigurationProperties("spring.datasource.two")    public DataSource masterDataSource(){        DriverManagerDataSource dataSource = new DriverManagerDataSource();        dataSource.setDriverClassName(driverClass);        dataSource.setUrl(url);        dataSource.setUsername(userName);        dataSource.setPassword(passWord);        return dataSource;    }    @Bean(name = "twoSqlSessionFactory")    public SqlSessionFactory sqlSessionFactory(@Qualifier("twoDataSource") DataSource dataSource) throws Exception {        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();        sessionFactoryBean.setDataSource(dataSource);        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()                .getResources("classpath:mybatis/mapper-postgres/*.xml"));                 return sessionFactoryBean.getObject();    }        @Bean(name = "twoSqlSessionTemplate")    public SqlSessionTemplate sqlSessionFactoryTemplate(@Qualifier("twoSqlSessionFactory")SqlSessionFactory sqlSessionFactory ) throws Exception {        return new SqlSessionTemplate(sqlSessionFactory);    }}

四 、结构

可能有人不清楚项目的结构,我在下面放了一张类结构图,能更清晰和方便理解。

注意:和之前的项目的主要区别就是 mapper包多了一个,mapper的xml包也多了一个,不同的数据库mapper放到不同的包内就可以了。

以上就是关于"springboot怎么连接两个数据库"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0