参考1: https://www.cnblogs.com/tangzekai/p/7782773.html

参考2  https://blog.csdn.net/baochanghong/article/details/54134018

jdbcTemplate:

List<ReportDetailInfo> list = ediPdJdbcTemplate.query(getAfterShipSql,new BeanPropertyRowMapper(ReportDetailInfo.class)) ;

配置:

package com.icil.report.config;

import javax.sql.DataSource;

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.jdbc.core.JdbcTemplate; @Configuration
public class DataSourceConfig { @Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")//原博主这里加上@Qualify 没有必要 删了也没有影响
@ConfigurationProperties("jdbc.datasource.edi")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
} // @Primary
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource") //原博主这里加上@Qualify 没有必要 删了也没有影响
@ConfigurationProperties("jdbc.datasource.booking")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
} /**
* @param dataSource
* @return
* @Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法, 并且交给Spring容器管理;从这我们就明白了为啥@Bean是放在方法的注释上了,
* 因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,
* 实现依赖注入
*/
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
} @Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
} }

application.properties

### database EDI configure
jdbc.datasource.edi.jdbc-url=jdbc:mysql:///EDI
jdbc.datasource.edi.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.datasource.edi.username=root
jdbc.datasource.edi.password=hhaa
jdbc.datasource.edi.sql-script-encoding=UTF- ### database booking configure
jdbc.datasource.booking.jdbc-url=jdbc:mysql:///booking
jdbc.datasource.booking.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.datasource.booking.username=root
jdbc.datasource.booking.password=hahahaha
jdbc.datasource.booking.sql-script-encoding=UTF-

test:

package top.zekk.twodatasource;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)
@SpringBootTest
public class TwoDatasourceApplicationTests { @Autowired
/*@Qualify 多个同类型bean?存在时 Spring不知道应该绑定哪个实现类
指定绑定的类名@Bean(name="**")
*/
@Qualifier("primaryJdbcTemplate")
protected JdbcTemplate jdbcTemplate1; @Autowired
//@Qualify 多个同类型bean?存在时 指定绑定的类名@Bean(name="**")
@Qualifier("secondaryJdbcTemplate")
protected JdbcTemplate jdbcTemplate2; @Before //首先执行清空数据库操作
public void setUp(){
jdbcTemplate1.update("DELETE FROM USER ");
jdbcTemplate2.update("DELETE FROM USER ");
} @Test
public void test(){
jdbcTemplate1.update
("INSERT INTO USER (id,name,age) VALUES (?,?,?)",,"aaa",);
jdbcTemplate2.update
("INSERT INTO USER (id,name,age) VALUES (?,?,?)",,"bbb",);
jdbcTemplate2.update
("INSERT INTO USER (id,name,age) VALUES (?,?,?)",,"bbb",); Assert.assertEquals("",jdbcTemplate1.queryForObject("select count(1) from user",String.class)); Assert.assertEquals("",jdbcTemplate2.queryForObject("select count(1) from user",String.class));
} }

JdbcTemplate 多数据源 jdbc的更多相关文章

  1. Spring Boot之JdbcTemplate多数据源配置与使用

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  2. springboot之JdbcTemplate单数据源使用

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  3. Spring学习笔记:jdbcTemplate和数据源配置

    一.使用Spring框架jdbcTemplate实现数据库的增删改查 1.数据库 /* SQLyog Ultimate v8.32 MySQL - 5.7.19-log : Database - in ...

  4. Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源

    多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...

  5. 使用Spring的jdbcTemplate进一步简化JDBC操作

    先看applicationContext.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <b ...

  6. Spring的jdbcTemplate 与原始jdbc 整合c3p0的DBUtils 及Hibernate 对比 Spring配置文件生成约束的菜单方法

    以User为操作对象 package com.swift.jdbc; public class User { private Long user_id; private String user_cod ...

  7. Spring框架针对dao层的jdbcTemplate操作之jdbc数据库连接原始操作方法 所需安装包下载

    crud指数据库或者持久层的基本操作,包括 增加(Create).读取查询(Retrieve 取回).更新(Update)和删除(Delete) Spring不仅对JDBC进行了封装,也对Hibern ...

  8. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. (四)SpringBoot2.0基础篇- 多数据源,JdbcTemplate和JpaRepository

    在日常开发中,经常会遇到多个数据源的问题,而SpringBoot也有相关API:Configure Two DataSources:https://docs.spring.io/spring-boot ...

随机推荐

  1. ubuntu16.04 使用kinectv2跑Elasticfusion

    1.安装openni2 参考:https://blog.csdn.net/D206_hero/article/details/78985859?utm_source=blogxgwz3  sudo a ...

  2. 【缓存】介绍和使用场景 MEMCACHE REDIS

    缓存缓存就是在内存中存储的数据备份,当数据没有发生本质改变的时候,我们就不让数据的查询去数据库进行操作,而去内存中取数据,这样就大大降低了数据库的读写次数,而且从内存中读数据的速度比去数据库查询要快一 ...

  3. JS实现购物商城商品放大

    img属于行内元素 <img src=''>gq</img> 效果 当放大图片时候,文字位置发生改变 文字出现在图片下方,因为图片有一个隐形的g线,这条线的位置和以前上学时候, ...

  4. ES6模板字符串【${}配合反单引号一起用】

    先看看JavaScript中两个字符串的效果,就很容易知道模板字符串是个啥东西,其实一点也不新鲜.高级编程中,例如java里面的string.format就是干这个事情,诸如此类. 1. 概念理解 A ...

  5. upstream timed out (10060: A connection attempt failed because the connected party did not properly respond

    openresty 错误日志报错内容: // :: [error] #: * upstream timed : A connection attempt failed because the conn ...

  6. 黄聪:如何正确在Vue框架里使用Swiper

    实例: 错误(无法显示出分页器按钮,此功能不适用与for循环出来的图片,只有当该页面图片固定几张时能正常用) 第一步: 安装  npm i swiper (vue插件自带) 第二步: 在当前页面里引入 ...

  7. Rhel6.5 相关操作

    Rhel 将光盘挂载动作 操作部分1 挂载光盘 https://jingyan.baidu.com/article/e52e3615a9c19440c60c5121.html ls -l /dev | ...

  8. html字体加粗标签与写法

    在html中字体加粗的标签为<b>标签,当我们使用了该标签,字体就会加粗,一般用于注明重要信息,强调文字上面写法如下 字体加粗:<b>这里的字体就会加粗</b> 效 ...

  9. .net 多线程之线程取消

    //线程取消不是操作线程,而是操作信号量(共享变量,多个线程都能访问到的东西,变量/数据库的数据/硬盘数据) //每个线程在执行的过程中,经常去查看下这个信号量,然后自己结束自己 //线程不能别人终止 ...

  10. Android中刷新Invalidate和postInvalidate的区别

    Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用.Android提供了Inval ...