• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

springboot项目配置两个数据源的方法

springboot 搞代码 4年前 (2022-01-09) 45次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于springboot项目配置两个数据源的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

本文主要介绍如何在一个springboot项目配置两个数据源(mysql和oracle);

1、引进相关依赖

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <scope>runtime</scope></dependency><!--oracle 驱动 --><dependency>    <groupId>com.oracle</groupId>    <artifactId>ojdbc6</artifactId>    <version>11.1.0.7.0</version></dependency>

当ojdbc驱动包版本过低,会报如下图所示错误,即驱动jar与数据库版本不兼容:

2、于applicationContext.yml中配置数据源连接参数:

Spring:        datasource:            base:                 driver-class-name: com.mysql.jdbc.Driver                 jdbc-url: ${base.db.url}                 username: ${base.db.username}                 password: ${base.db.password}            oa:                 driver-class-name: oracle.jdbc.driver.OracleDriver                 jdbc-url: ${oa.db.urL}                 username: ${oa.db.username}                 password: ${oa.db.password}            hikari:                 max-lifetime: 60000                 login-timeout: 5                 validation-timeout: 3000                 connection-timeout: 60000                 idle-timeout: 60000

3、多数据源配置文件,读取对应连接参数

Package com.**.config;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationPropertie<strong style="color:transparent">本文来源gaodai#ma#com搞@@代~&码*网/</strong>s;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.sql.DataSource;public class MultiDataSourceConfig {    @Bean (name = "primaryDataSource")    @Qualifier("primaryDataSource")    @Primary //定义主数据源    @ConfigurationProperties (prefix = "spring.datasource.Base")    public DataSource primaryDataSource () { return DataSourceBuilder.create().build (); }    @Bean (name = "secondaryDataSource")    @Qualifier ("secondaryDataSource")    @ConfigurationProperties (prefix = "spring.datasource.oa")    public DataSource secondaryDataSource () { return DataSourceBuilder.create().build (); }}

3、主数据源配置,指定扫描对应mapper文件以及对应xml文件,在使用mapper包下的mapper文件时会自动使用对应sql会话

Package com.**.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.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframeworkcore.io.support.PathMatchingResourcePatternResolver;import org.spr ingframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import javax.sql.DataSource;@Configuration@MapperScan (basePackages = "com.**.mapper", sqlSessionTemplateRef = "primarySqlSessionTemplate")public class SqlSessionTemplate1 {    @Bean (name = "primarySqlSessionFactory")    @Primary    public SqlSessionFactory primarySqlSessionFactory  (@Qualifier("primaryDataSource") DataSource dataSource)            throws Exception{        SqLSessionFactoryBean bean = new SqlSessionFactoryBean ();        bean.setDataSource (dataSource);        bean.setMapperLocations (new PathMatchingResourcePatternResolver().getResources (locationPattern: "classpath: mybatis/mapper/*. XmL"));        return bean.getObject();    }    /**     * 配置声明式事务管理器     */    @Bean (name = "primaryTransactionManager")    @Primary    public PlatformTransactionManager primaryTransactionManager  (@Qualifier("primaryDataSource") DataSource dataSource) {        return new DataSourceTransactionManager  (dataSource);    }    @Bean (name = "primarySqlSessionTemplate")    @Primary    public SqlSessionTemplatel primarySqlSessionTemplate(@Qualifier("primarySqlSesionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {        return new SqlSessionTemplatel(sqlSessionFactory);    }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:springboot项目配置两个数据源的方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址