什么是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)配置与使用相关推荐

  1. 【SpringBoot】Spring boot 多数据源 no transaction is in progress EntityManager flush

    1.概述 多数据源参考:<spring-boot学习>-09-spring boot+mybatis多数据源 根据这个 关于no transaction is in progress错误的 ...

  2. spring boot多数据源配置(mysql,redis,mongodb)实战

    使用Spring Boot Starter提升效率 虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfi ...

  3. spring boot多数据源配置示例

    spring boot多数据源配置 1.application.properties spring.datasource.url = jdbc\:oracle\:thin\:@192.168.3.88 ...

  4. springboot 读取配置文件_使用 @ConfigurationProperties 在 Spring Boot 中加载配置

    本文地址: 使用 @ConfigurationProperties 在 Spring Boot 中加载配置 使用 Spring Boot 加载配置文件的配置非常便利,我们只需要使用一些注解配置一下就能 ...

  5. boot spring 接口接收数据_在 Spring Boot 中使用 Dataway 配置数据查询接口

    Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得使用者无需开发任何代码就配置一个满足需求的接口. 整个接口配置.测试.冒烟.发布.一站式都通过 ...

  6. Spring Boot 多数据源(读写分离)入门

    转载自  芋道 Spring Boot 多数据源(读写分离)入门 1. 概述 在项目中,我们可能会碰到需要多数据源的场景.例如说: 读写分离:数据库主节点压力比较大,需要增加从节点提供读操作,以减少压 ...

  7. Spring Boot 2.0 的配置详解(图文教程)

    本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...

  8. Spring Boot Validation提示信息国际化配置

    引言 之前介绍过Spring Boot Validation的使用及扩展,可参见:<SpringBoot Validation> 本文在此基础上重点讲解下Spring Boot Valid ...

  9. Spring Boot 默认数据源 HikariDataSource_Spring Boot 中使用 Hikari

    Spring Boot 默认数据源 HikariDataSource springboot2.x之后,系统的默认数据源由原来的的org.apache.tomcat.jdbc.pool.DataSour ...

最新文章

  1. 一周焦点 | 李飞飞离职谷歌;Facebook推OCR神器Rosetta;TensorFlow开源新库TFDV
  2. 选择之后触_发宜常梳:4种材质的梳子,我们最常用的梳子却对头发最不好,该如何选择?...
  3. 骚操作!Intellij IDEA居然藏着这些实用小技巧 !
  4. 开启python之旅
  5. 果断 Mark!27 个免费、低成本 Python 学习资源入手!
  6. 上门挂画服务_瀑布山水画挂在哪里好 弄懂这2点挂画没烦恼
  7. python-14:迭代器 生成器,3种方法:g.__next__() next(g) g.send(value)
  8. C# 获取Datagridview 中ComboBox列的DisplayMember值和ValueMember值
  9. php valid函数,PHP函数uasort()在类中的使用问题解决
  10. mysql安装包下载
  11. 利用百度智能云实现车牌号识别
  12. 小米手机第三方卡刷软件_小米手机刷机工具官方下载
  13. 实用SQL代码解析工具——sqlparse
  14. 激光跟踪传感器的工作原理
  15. 马云被骗十亿?最后却被百倍奉还。
  16. python turtle画动物_用python画简单的动物
  17. word2vec的原理及实现(附github代码)
  18. 怎么把钉钉的文件导入电脑_钉钉文件怎么保存到电脑
  19. 通过iptable进行流量转发
  20. MarkDown编辑器 - MarkText使用文档

热门文章

  1. Maven安装与配置(最实用!!!)eclipse中配置maven
  2. libgstreamer-1.0.so.0: cannot open shared object file: No such file or directory
  3. Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化
  4. The listener supports no services
  5. 合肥工业大学—SQL Server数据库实验五:创建和删除索引
  6. 智能驾驶计算平台算力技术
  7. TVM性能评估分析(一)
  8. 人工智能训练云燧T10
  9. Ascend昇腾计算
  10. 深度学习Dropout技术分析