Spring Boot 整合持久层技术——使用JdbcTemlate实现多数据源操作
发布日期:2021-06-30 22:58:40 浏览次数:2 分类:技术文章

本文共 3394 字,大约阅读时间需要 11 分钟。

这里使用 阿里云ESC CentOS7 服务器,MySQL版本为5.6.47

可能会用到:

一、创建数据库

在这里插入图片描述

在这里插入图片描述

二、依赖选用

在这里插入图片描述

Spring帮助我们导入依赖之后,我们需要对依赖进行增加和修改

org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-web
com.alibaba
druid-spring-boot-starter
1.1.10
mysql
mysql-connector-java
runtime
5.1.6

1.为什么加入数据库驱动版本号?

 因为Spring默认数据库驱动版本号是MySql 8.x的版本,而这里使用的是MySql 5.x的版本,如果默认和数据库版本号不对应会导致数据库无法连接。

2.MySQL JDBC驱动版本与MySQL数据库版本对应关系:

 Connector/J8.0.12支持Mysql8.0.12这些版本。

 Connector/J 5.1 支持Mysql 4.1、Mysql 5.0、Mysql 5.1、Mysql 6.0 alpha这些版本。
 Connector/J 5.0 支持MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)。
 Connector/J 3.1 支持MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) support。
 Connector/J 3.0 支持MySQL 3.x or MySQL 4.1。

 这里我用的是MySQL5.6.47,选用对用的版本即可;

在这里插入图片描述
 具体版本号对应的依赖可查看:

3.alibaba数据库连接池依赖

druid-spring-boot-starter是依赖于spring-boot-starter的依赖,是alibaba专门为SpringBoot量身定做的,在我们使用多数据源的时候会用到它;alibaba也提供了单独的druid依赖,当然多数据源操作时不能选用此依赖。

com.alibaba
druid-spring-boot-starter
1.1.10

三、数据源配置

 单个数据源的时候我们在application.properties里做如下配置

#远程数据库连接spring.datasource.url=jdbc:mysql://121.40.83.80:3306/testdb1#数据库用户名spring.datasource.username=root#数据库密码spring.datasource.password=123456#数据源类型spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

 多个数据源的时候我们要进行如下配置

spring.datasource.noe.url=jdbc:mysql://121.40.83.80:3306/testdb1spring.datasource.noe.username=rootspring.datasource.noe.password=123456spring.datasource.noe.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.two.url=jdbc:mysql://121.40.83.80:3306/testdb2spring.datasource.two.username=rootspring.datasource.two.password=123456spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource

 但是,当我们加入.one.two之后,Spring的自动化配置已经失效,这时,我们需要新建config包进行手动配置datasourcejdbctemplate

在这里插入图片描述

  • DataSourceConfig

@Configurationpublic class DataSourceConfig {
@Bean //类型安全的属性注入,选择相应的配置文件 @ConfigurationProperties(prefix = "spring.datasource.noe") DataSource dsOne(){
return DruidDataSourceBuilder.create().build(); } @Bean //类型安全的属性注入,选择相应的配置文件 @ConfigurationProperties(prefix = "spring.datasource.two") DataSource dsTwo(){
return DruidDataSourceBuilder.create().build(); }}
  • JdbcTemplateConfig

@Configurationpublic class JdbcTemplateConfig {
@Bean JdbcTemplate jdbcTemplateOne(@Qualifier("dsOne")DataSource dsOne){
return new JdbcTemplate(dsOne); } @Bean JdbcTemplate jdbcTemplateTwo(@Qualifier("dsTwo")DataSource dsTwo){
return new JdbcTemplate(dsTwo); }}

四、单元测试

@SpringBootTestclass JdbctemplateApplicationTests {
//注入相应配置类方法一: @Autowired @Qualifier("jdbcTemplateOne") JdbcTemplate jdbcTemplateOne; //注入相应配置类方法二: @Resource(name = "jdbcTemplateTwo") JdbcTemplate jdbcTemplateTwo; @Test void contextLoads() {
List
list1 = jdbcTemplateOne.query("select * from user", new BeanPropertyRowMapper<>(User.class)); List
list2 = jdbcTemplateTwo.query("select * from user", new BeanPropertyRowMapper<>(User.class)); System.out.println(list1); System.out.println(list2); }}

在这里插入图片描述

转载地址:https://lukeyalvin.blog.csdn.net/article/details/104114963 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【详细/亲测】CentOS7安装好Mysql,实现远程登陆和访问之前要做的准备!
下一篇:Navicat远程连接远程数据库Mysql

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月27日 01时07分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

一周拿下百度Offer!211本+985硕+计算机专业~ 2019-05-01
闭关三月!猛男逆道而行,四杀斩获阿里 / 腾讯 / 京东 / 百度等大厂 offer 2019-05-01
花了3个达不溜!让隔壁小姐姐从圈内大佬手中拿到“阿里面试官手册”,看完之后我大呼“不亏”! 2019-05-01
上线三天获 22w 浏览量!2021 最新一线大厂 Java 高级架构师面试题总结~ 2019-05-01
电信物联网平台SOTA升级(软件升级)的全流程说明 2019-05-01
电信物联网平台插件开发相关总结 2019-05-01
ARM之一 分散加载文件(scatter)详述 2019-05-01
centos6 python3.6 安装配置jupyer 2019-05-01
CDH5.14 spark2.4.0配置python3 以及读取hive表 2019-05-01
VMware安装centos7.2后配置网络并设置固定ip 2019-05-01
在 centos7.2安装docker 并设置阿里云源 2019-05-01
centos7.2 将mysql添加到服务中 2019-05-01
【nifi数据采集】nifi给kafka打数据遇到的坑 - kafka2.1 的listeners配置 2019-05-01
【linux用户模块】/etc/passwd的字段含义 2019-05-01
【linux用户模块】用户/用户组的管理 2019-05-01
【spark2】【源码学习】【环境编译】在idea导入spark源码,执行example并debug 2019-05-01
【spark2】【源码学习】【分区数】spark读取 本地/可分割/单个 的文件时是如何划分分区 2019-05-01
【大数据】【调度】Airflow 和 Azkaban的选型 2019-05-01
【spark2】【源码学习】【代码】spark2的textFile()是怎么实例化各个不同的fs(FileSystem) 2019-05-01
用zabbix监控nginx 2019-05-01