当前位置: 代码网 > it编程>编程语言>Java > springboot连接多个数据库的实现方法

springboot连接多个数据库的实现方法

2024年08月18日 Java 我要评论
一个springboot项目,同时连接两个数据库:比如一个是mysql数据库,一个是oracle数据库(啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的drive

一个springboot项目,同时连接两个数据库:比如一个是mysql数据库,一个是oracle数据库(啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的driver-class-name和jdbc-url等即可)注意:连接什么数据库,要引入对应数据库的包。

第一步:

导入pom

<dependency>
    <groupid>com.alibaba</groupid>
    <artifactid>druid</artifactid>
    <version>1.1.0</version>
</dependency>
 
<dependency>
    <groupid>mysql</groupid>
    <artifactid>mysql-connector-java</artifactid>
    <scope>runtime</scope>
</dependency>

第二步:

修改application.yml配置文件(我采用本地的,ip地址是一致的,实际开发中,是两台云服务,两台mysql地址进行主从读写)

    mysql1:
      driver-class-name: com.mysql.cj.jdbc.driver
      jdbcurl: jdbc:mysql://localhost:3306/test?usessl=false&useunicode=true&characterencoding=utf-8&servertimezone=gmt%2b8
      username: "root"
      password: "12345678"
      type: com.alibaba.druid.pool.druiddatasource
    mysql2:
      driver-class-name: com.mysql.cj.jdbc.driver
      jdbcurl: jdbc:mysql://localhost:3306/test1?usessl=false&useunicode=true&characterencoding=utf-8&servertimezone=gmt%2b8
      username: "root"
      password: "12345678"
      type: com.alibaba.druid.pool.druiddatasource

在这里插入图片描述

注意格式上面spring.datasource省略了

第三步:

建造配置类:
(1)第一个库配置信息:

/**
 * 数据库leadnews_article
 */
@configuration
@mapperscan(basepackages = {"com.example.demo.mapper.db1"}, sqlsessionfactoryref = "sqlsessionfactoryarticle")
public class dbsrcarticle {
    @bean
    public sqlsessionfactory sqlsessionfactoryarticle(@qualifier("mysql1") datasource datasource) throws exception {
        mybatissqlsessionfactorybean sqlsessionfactory = new mybatissqlsessionfactorybean();
        sqlsessionfactory.setdatasource(datasource);
        sqlsessionfactory.setmapperlocations(new pathmatchingresourcepatternresolver()
                .getresources("classpath:mapper/db1/*.xml"));
        return sqlsessionfactory.getobject();
    }

    @bean
    public sqlsessiontemplate sqlsessiontemplatearticle(@qualifier("sqlsessionfactoryarticle") sqlsessionfactory sqlsessionfactory) throws exception {
        return new sqlsessiontemplate(sqlsessionfactory);
    }
}

(2)第二个库配置

/**
 * 数据库leadnews_user
 */
@configuration
@mapperscan(basepackages = {"com.example.demo.mapper.db2"}, sqlsessionfactoryref = "sqlsessionfactoryuser")
public class dbsrcuser {
    @bean
    @primary
    public sqlsessionfactory sqlsessionfactoryuser(@qualifier("mysql2") datasource datasource) throws exception {
        mybatissqlsessionfactorybean sqlsessionfactory = new mybatissqlsessionfactorybean();
        sqlsessionfactory.setdatasource(datasource);
        sqlsessionfactory.setmapperlocations(new pathmatchingresourcepatternresolver()
                .getresources("classpath:mapper/db2/*.xml"));
        return sqlsessionfactory.getobject();
    }

    @bean
    @primary
    public sqlsessiontemplate sqlsessiontemplateuser(@qualifier("sqlsessionfactoryuser") sqlsessionfactory sqlsessionfactory) throws exception {
        return new sqlsessiontemplate(sqlsessionfactory);
    }
}

(3)数据源配置:

/**
 * 数据源配置
 */
@configuration
public class datasourceconfig {
    @primary
    @bean(name = "mysql1")
    @configurationproperties(prefix = "spring.datasource.mysql1")
    public datasource dbsrcarticle() {
        return datasourcebuilder.create().build();
    }

    @primary
    @bean(name = "mysql2")
    @configurationproperties(prefix = "spring.datasource.mysql2")
    public datasource dbsrcuser() {
        return datasourcebuilder.create().build();
    }
}

注意:连接两个以上的数据库,需要对mapper文件夹进行分包

在这里插入图片描述

第四步:

在启动类中加上这三个注解:

@springbootapplication(exclude = {datasourceautoconfiguration.class})
@mapperscan(basepackages = {"com.example.demo.entity.db1"}, sqlsessionfactoryref = "sqlsessionfactoryarticle")
@mapperscan(basepackages = {"com.example.demo.entity.db2"}, sqlsessionfactoryref = "sqlsessionfactoryuser")

此时:已经可以访问两个数据库内容了。

到此这篇关于springboot连接多个库的实现方法的文章就介绍到这了,更多相关springboot连接多个库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com