SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用
什么是JdbcTemplate
为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架.
作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务.通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低.
JdbcTemplate主要提供以下五类方法:
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
说在前面
之前有整合过SpringBoot+JdbcTemplate和SpringBoot+mybatis,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于之前的JdbcTemplate介绍下多数据源的配置方式。
项目结构
代码实现
1、pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.fit</groupId><artifactId>SpringBootJdbcTemplate</artifactId><version>0.0.1-SNAPSHOT</version><!-- SpringBoot父类依赖引用 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><dependencies><!-- jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><!-- SpringBoot web 组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
2、application.properties文件
#primary
spring.datasource.primary.url=jdbc:mysql://127.0.0.1:3306/mydb
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver#secondary
spring.datasource.secondary.url=jdbc:mysql://127.0.0.1:3306/mydb1
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
3、DataSourceConfig.java文件
/*** 数据源配置* @author zlzhaoe**/
@Configuration
public class DataSourceConfig {@Bean(name = "primaryDataSource")@Qualifier("primaryDataSource")@ConfigurationProperties(prefix="spring.datasource.primary")public DataSource primaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "secondaryDataSource")@Qualifier("secondaryDataSource")@Primary@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);}
}
4、com.fit.service层
public interface UserService {public List<Map<String, Object>> primaryUserList();public List<Map<String, Object>> secondaryUserList();
}@Service
public class UserServiceImpl implements UserService {@Autowired@Qualifier("primaryJdbcTemplate")private JdbcTemplate primaryJdbcTemplate;@Autowired@Qualifier("secondaryJdbcTemplate")private JdbcTemplate secondaryJdbcTemplate;public List<Map<String, Object>> primaryUserList() {// TODO Auto-generated method stubString sql = "select * from sys_user";List<Map<String, Object>> userList = primaryJdbcTemplate.queryForList(sql);return userList;}public List<Map<String, Object>> secondaryUserList() {// TODO Auto-generated method stubString sql = "select * from sys_user";List<Map<String, Object>> userList = secondaryJdbcTemplate.queryForList(sql);return userList;}}
5、UserController.java
@Controller
public class UserController {@Resourceprivate UserService userService;@ResponseBody@RequestMapping(value = "primaryUserList")public List<Map<String, Object>> userList() {return userService.primaryUserList();}@ResponseBody@RequestMapping(value = "secondaryUserList")public List<Map<String, Object>> secondaryUserList() {return userService.secondaryUserList();}
}
6、APP.java文件
@SpringBootApplication
public class APP {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubSpringApplication.run(APP.class, args);}
}
源码下载
SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用相关推荐
- 【SpringBoot】Spring boot 多数据源 no transaction is in progress EntityManager flush
1.概述 多数据源参考:<spring-boot学习>-09-spring boot+mybatis多数据源 根据这个 关于no transaction is in progress错误的 ...
- spring boot多数据源配置(mysql,redis,mongodb)实战
使用Spring Boot Starter提升效率 虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfi ...
- spring boot多数据源配置示例
spring boot多数据源配置 1.application.properties spring.datasource.url = jdbc\:oracle\:thin\:@192.168.3.88 ...
- springboot 读取配置文件_使用 @ConfigurationProperties 在 Spring Boot 中加载配置
本文地址: 使用 @ConfigurationProperties 在 Spring Boot 中加载配置 使用 Spring Boot 加载配置文件的配置非常便利,我们只需要使用一些注解配置一下就能 ...
- boot spring 接口接收数据_在 Spring Boot 中使用 Dataway 配置数据查询接口
Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得使用者无需开发任何代码就配置一个满足需求的接口. 整个接口配置.测试.冒烟.发布.一站式都通过 ...
- Spring Boot 多数据源(读写分离)入门
转载自 芋道 Spring Boot 多数据源(读写分离)入门 1. 概述 在项目中,我们可能会碰到需要多数据源的场景.例如说: 读写分离:数据库主节点压力比较大,需要增加从节点提供读操作,以减少压 ...
- Spring Boot 2.0 的配置详解(图文教程)
本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...
- Spring Boot Validation提示信息国际化配置
引言 之前介绍过Spring Boot Validation的使用及扩展,可参见:<SpringBoot Validation> 本文在此基础上重点讲解下Spring Boot Valid ...
- Spring Boot 默认数据源 HikariDataSource_Spring Boot 中使用 Hikari
Spring Boot 默认数据源 HikariDataSource springboot2.x之后,系统的默认数据源由原来的的org.apache.tomcat.jdbc.pool.DataSour ...
最新文章
- 一周焦点 | 李飞飞离职谷歌;Facebook推OCR神器Rosetta;TensorFlow开源新库TFDV
- 选择之后触_发宜常梳:4种材质的梳子,我们最常用的梳子却对头发最不好,该如何选择?...
- 骚操作!Intellij IDEA居然藏着这些实用小技巧 !
- 开启python之旅
- 果断 Mark!27 个免费、低成本 Python 学习资源入手!
- 上门挂画服务_瀑布山水画挂在哪里好 弄懂这2点挂画没烦恼
- python-14:迭代器 生成器,3种方法:g.__next__() next(g) g.send(value)
- C# 获取Datagridview 中ComboBox列的DisplayMember值和ValueMember值
- php valid函数,PHP函数uasort()在类中的使用问题解决
- mysql安装包下载
- 利用百度智能云实现车牌号识别
- 小米手机第三方卡刷软件_小米手机刷机工具官方下载
- 实用SQL代码解析工具——sqlparse
- 激光跟踪传感器的工作原理
- 马云被骗十亿?最后却被百倍奉还。
- python turtle画动物_用python画简单的动物
- word2vec的原理及实现(附github代码)
- 怎么把钉钉的文件导入电脑_钉钉文件怎么保存到电脑
- 通过iptable进行流量转发
- MarkDown编辑器 - MarkText使用文档
热门文章
- Maven安装与配置(最实用!!!)eclipse中配置maven
- libgstreamer-1.0.so.0: cannot open shared object file: No such file or directory
- Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化
- The listener supports no services
- 合肥工业大学—SQL Server数据库实验五:创建和删除索引
- 智能驾驶计算平台算力技术
- TVM性能评估分析(一)
- 人工智能训练云燧T10
- Ascend昇腾计算
- 深度学习Dropout技术分析