一个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连接多个库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论