SpringBoot项目配置多数据源
1. 修改application.yml
注意
- 连接多个数据库时,url要更改为jdbc-url,否则会报错。
- 多数据源的配置中需要指定具体的名称来区分不同的数据库(上述配置中的dev和local,名称可以根据具体需求自定义)
- mybatis配置别名不起作用,因此注释掉了。
#mybatis:
# type-aliases-package: usts.eie.sbmp.pojo
spring:datasource:dev:username: rootpassword: rootjdbc-url: jdbc:mysql://114.55.174.146:3306/hello?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.Driverlocal:username: rootpassword: rootjdbc-url: jdbc:mysql://localhost:3306/ssmbuild?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.Driver
2. 添加数据库连接配置文件
dev数据源配置文件
@Configuration
@MapperScan(basePackages = "usts.eie.sbmp.dao.dev",sqlSessionFactoryRef = "devSqlSessionFactory")
public class DevDataSourceConfig {@Primary@Bean(name = "devDataSource")@ConfigurationProperties("spring.datasource.dev")public DataSource masterDataSource(){return DataSourceBuilder.create().build();}@Bean(name = "devSqlSessionFactory")public SqlSessionFactory sqlSessionFactory(@Qualifier("devDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();sessionFactoryBean.setDataSource(dataSource);sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/dev/*.xml"));return sessionFactoryBean.getObject();}
}
local数据源配置文件
package usts.eie.sbmp.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
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 org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "usts.eie.sbmp.dao.local",sqlSessionFactoryRef = "localSqlSessionFactory")
public class LocalDataSourceConfig {@Primary@Bean(name = "localDataSource")@ConfigurationProperties("spring.datasource.local")public DataSource masterDataSource(){return DataSourceBuilder.create().build();}@Bean(name = "localSqlSessionFactory")public SqlSessionFactory sqlSessionFactory(@Qualifier("localDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();sessionFactoryBean.setDataSource(dataSource);sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/local/*.xml"));return sessionFactoryBean.getObject();}
}
注意
不同配置文件通过@MapperScan注解的内容来区分不同数据库下的mapper文件,由于这里连接的是两个数据库,所以这里两个值不能一样,即第一个和第二个数据库的mapper应该放在两个不同的目录下。否则启动会报找不到表的错误。
注解内容的对应关系如下图所示
3. 修改主启动类
4. 其他
除此之外,pojo,mapper,service的写法和之前一样。
注意:由于没有为pojo中的类配置别名,所以在写对应的 mapper.xml文件时,要把类名写完整 如下图所示
项目总体结构如下图所示
SpringBoot项目配置多数据源相关推荐
- SpringBoot JPA配置多数据源(同类型库)教程
SpringBoot项目配置多数据源主要分为以下个步骤: 确定好所连接的数据库的资源(包括url username password) 将两个库的信息写入到配置文件中(application.yaml ...
- springboot jpa 配置多数据源
jpa 多数据源配置 多个 mysql 数据库配置 springboot jpa 配置多数据源其实也并不难,只需要在 properties 或者 yml中简单配置并在项目中引入配置即可. 下面以 ym ...
- springboot项目配置视图解析器无效的问题
springboot项目配置视图解析器无效的问题 今天springboot尝试配置视图解析器的时候,如图: 一切正常,视图解析器却始终无效.后面发现问题. 在控制器的注解要使用:@Controller ...
- SpringBoot项目配置明文密码泄露问题的处理方式
SpringBoot项目配置明文密码泄露问题的处理方式: 1.引入jar包 <dependency> <groupId>com.github.ulisesbocchio ...
- IDEA SpringBoot项目配置热更新,无需每次手动重启服务器
IDEA SpringBoot项目配置热更新的步骤 在pom.xml中添加依赖: <dependency><groupId>org.springframework.boot&l ...
- springboot项目配置yml中数据源后报错Unknown database user_information(已解决)
目录 问题现象: 问题分析: 解决方法: 问题现象: 今天在用.yml配置了springboot项目的Mysql数据源后,出现了无法访问数据库的问题: 报错如下: Unknown database ' ...
- SpringBoot(配置druid数据源、配置MyBatis、事务控制、druid 监控)
SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少 数据层操作,所有的开发都一定秉持着 MVC 设计模式的原则,MVC 里面业务层不可少 ...
- db2 springboot 整合_[SpringBoot]快速配置多数据源(整合MyBatis)
前言 由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据 ...
- mybatis多数据源配置_随笔:springboot+mybatis 配置双数据源
山石彦 | 作者 urlify.cn/vQzIne | 来源 最近工作中有用到双数据源,一个项目(中台)中需要操作两个不同的数据库.当时考虑到了两种方式, 1.通过http请求访问(A项目访问d1数据 ...
最新文章
- WC2018集训 吉老师的军训练
- Enterprise Library 4 缓存应用程序块的设计
- three.ar.js_我们如何通过AR.js使产品吉祥物栩栩如生
- low逼三人组、nb二人组、归并、希尔排序----小结
- 符号执行:利用Angr进行简单CTF逆向分析
- Altium Designer PCB快速布局
- 第七讲:数据契约(2)
- 为什么建议大家使用 Linux 开发
- irobot扫地机器人 电压_iRobot评测!扫地机器人究竟能有多好用?
- UltraEdit批量删除关键字所在的指定行
- CentOS6安裝Cacti
- 图像分类数据库_图像分类器-使用僧侣库对房屋房间类型进行分类
- P5641 【CSGRound2】开拓者的卓识(多项式)
- mysql数据库的链接地址_常用数据库连接URL地址大全
- phpcms文章 title 溢出 str_cut 省略号(······) - 代码篇
- 百度利用AI技术8、9月打击超83亿条有害信息
- 没有朋友,一个人旅行是什么感受?
- 张艾迪(创始人): 我的梦想与成长之路
- C++多态的练习——编写一个计算器项目
- 历年计算机二级考试Java真题 JAVA笔试试题及答案(部分套题)