首先添加依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

编写配置文件:

//第一个数据源
spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1?serverTimezon
e=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver
//第二个数据源
spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/test2?serverTimez
one=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver
注意,这⾥里里使⽤用的是 spring.datasource.*.jdbc-url,因为默认连接池 HikariCP 读取的是 jdbc-url。

初始化JDBC:

@Configuration
public class DataSourceConfig {@Primary
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {return DataSourceBuilder.create().build();
}
@Bean(name="primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate (
@Qualifier("primaryDataSource") DataSource dataSource ) {return new JdbcTemplate(dataSource);
}
@Bean(name="secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(
@Qualifier("secondaryDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);
}
}

创建实体类(User):
此处省略
创建数据库操作接口:

public interface UserRepository {int save(User user);
int update(User user);
int delete(long id);
List<User> findALL();
User findById(long id);
}

实现接口:

@Repository
public class UserRepositoryImpl implements UserRepository {@Autowired
private JdbcTemplate primaryJdbcTemplate;
@Override
public int save(User user,JdbcTemplate jdbcTemplate) {if(jdbcTemplate == null){jdbcTemplate= primaryJdbcTemplate;
}
return jdbcTemplate.update("INSERT INTO users(name, password, age) values(
?, ?, ?)",
user.getName(), user.getPassword(), user.getAge());
}
//其他⽅方法省略略
}

多数据源测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTests {@Autowired
private UserRepository userRepository;
@Autowired
private JdbcTemplate primaryJdbcTemplate;
@Autowired
private JdbcTemplate secondaryJdbcTemplate;
@Test
public void testSave() {User user =new User("smile","123456",30);
userRepository.save(user,primaryJdbcTemplate);
userRepository.save(user,secondaryJdbcTemplate);
}
}

StringBoot(多数据源的使用)相关推荐

  1. SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用

    什么是JdbcTemplate 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDB ...

  2. SpringBoot整合JDBC、整合Druid数据源详解教程

    目录 一.整合JDBC 1. 环境准备 1. 创建数据库 2. 创建SpringBoot项目 3. IDEA连接数据库 2. 编写数据库配置信息 3. 编写测试类测试 4. CRUD操作数据库 1. ...

  3. 2021年大数据ELK(二十五):添加Elasticsearch数据源

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 添加Elasticsearch数据源 一.Kibana索引模式 添加Elast ...

  4. 2021年大数据Spark(二十):Spark Core外部数据源引入

    目录 外部数据源 MySQL 数据源 演示代码 HBase 数据源 HBase Sink ​​​​​​​HBase Source 外部数据源 Spark可以从外部存储系统读取数据,比如RDBMs表中或 ...

  5. Superset配置hive数据源

    1.在uri中配置 hive://localhost:10000/default 2.查询 3.如果你的hive集群是带有kerberos认证的,hive数据源需要这样配置 hive://xxx:xx ...

  6. Spring中配置DataSource数据源的几种选择

    Spring中配置DataSource数据源的几种选择 在Spring框架中有如下3种获得DataSource对象的方法: 从JNDI获得DataSource. 从第三方的连接池获得DataSourc ...

  7. 程序编辑SHP文件并应用更改到数据源

    在上一篇Blog中峻祁连介绍了在Map 3D中通过程序删除图层及数据源的方法,并且卖了个关子,这个方法还有另外一个妙用,今天就简单介绍一下.对数据源的编辑估计是Map 3D开发中最常见的功能了,包括对 ...

  8. springboot添加多数据源连接池并配置Mybatis

    springboot添加多数据源连接池并配置Mybatis 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190226.html May 12, 2018  ...

  9. JDBC数据源连接池(1)---DBCP

    何为数据源呢?也就是数据的来源.我在前面的一篇文章<JDBC原生数据库连接>中,采用了mysql数据库,数据来源于mysql,那么mysql就是一种数据源.在实际工作中,除了mysql,往 ...

最新文章

  1. @SupperssWarnings注解
  2. win下手动编译狂魔的必备C/C++编译环境
  3. java been 字段命名的坑
  4. Altium Designer多通道设计原理图添加端口
  5. android广告轮播图之匀速规律播放
  6. helm部署SkyWalking
  7. Spring JSR-250 注释
  8. 工作流实战_09_flowable 流程实例挂起与激活
  9. Eclipse快捷键-方便查找
  10. 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线
  11. 机器学习基础:模糊C均值聚类(Machine Learning Fundamentals: Fuzzy C-Means )Python实现
  12. 用于物联网数据收集和传输的边缘网络密钥
  13. c# json 汉字乱码_C# 读取Json内的数据,中文乱码,怎么解决
  14. 正则表达式的简单学习
  15. RuoYi-Vue 若依 新增子module模块,子模块的接口报404,以及自定义包名后如何确保正确扫描?
  16. 遥远记忆中的美好时光
  17. Oauth认证-新浪微博开发(上)
  18. GPU服务器的上手使用-小试牛刀
  19. [2019HDU多校第一场][HDU 6578][A. Blank]
  20. 【机器学习】Learning to Rank 简介

热门文章

  1. SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一)...
  2. mysql sql查询超时排查
  3. 神犇营-my1085-面积
  4. dell 去鼠标版功能widnows
  5. 【已解决】Tomcat配置“X-Frame-Options头未设置”警告的过滤器(详细)
  6. 计算机历史相关纪录片,BBC纪录片《古代计算机 The Two Thousand Year Old Computer (2012)》全1集 英语中字 720P高清纪录片-纪录家园...
  7. 安卓ps2模拟器_安卓PSP模拟器评测:如龙 黑豹2 阿修罗篇
  8. .3gp 文件播放初窥
  9. android listview排序分组,Android:如何对ListView的数据进行排序?
  10. 一个迷失的IT工作者