百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

简单的用jdbc使spring boot项目同时连接Oracle和Mysql数据源

mhr18 2024-09-21 19:04 21 浏览 0 评论

1.首先在pom.xml中添加依赖

//jdbc连接数据库

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

//第一个数据源:mysql

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<scope>runtime</scope>

</dependency>

//第二个数据源:ojdbc6,oracle无法从maven库中下载,需要下载jar包手动导入

<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc6</artifactId>

<version>10.2.0.4.0</version>

</dependency>

2.下载了一个可以使用mysql语句的第三方app :mysql workbench;(这一步是为了方便测试,可以忽略,下载mysql workbench,需要依赖于另一个插件,按照步骤下载即可)

3.在appliction.properties中添加配置信息

//第一数据源

spring.datasource.primary.url=jdbc:oracle:thin:@10.72.2.22:1521:coapinst

spring.datasource.primary.username=coapinst

spring.datasource.primary.password=coapinst

spring.datasource.primary.driver-class-name=oracle.jdbc.OracleDriver

//第二数据源

spring.datasource.secondary.url=jdbc:mysql://10.72.2.21:3306/drools

spring.datasource.secondary.username=root

spring.datasource.secondary.password=admin

spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver

4.添加数据配置类,直接添加即可(如果是只有两个的话,无需改动,再多的话,依照上面的模板添加)

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;

import org.springframework.boot.context.properties.ConfigurationProperties;

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")//该注解指定注入的Bean的名称,Spring框架使用byName方式寻找合格的 bean,这样就消除了byType方式产生的歧义

@ConfigurationProperties(prefix="spring.datasource.primary")//读取配置文件里前缀 为"spring.datasource.primary"的语句

public DataSource primaryDataSource() {

return DataSourceBuilder.create().build();

}

@Bean(name = "secondaryDataSource")

@Qualifier("secondaryDataSource")

@Primary//有时候我们能保证同一个类型在spring容器中只有一个实例,有时候我们保证不了,此时不讨论by name注入。这个时候@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);

}

}

5.添加测试类

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.dao.DataAccessException;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.PreparedStatementCallback;

import org.springframework.jdbc.core.PreparedStatementCreator;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class CxzdbController {

@Autowired

@Qualifier("primaryJdbcTemplate")

protected JdbcTemplate jdbcTemplate1;

@Autowired

@Qualifier("secondaryJdbcTemplate")

protected JdbcTemplate jdbcTemplate2;

// @Autowired

// protected JdbcTemplate jdbcTemplate;

@RequestMapping("/test")

public List<Map<String, Object>> getCxzdb(){

// String sql = "SELECT * FROM sys_user";

String sql = "SELECT * FROM USER";

List<Map<String, Object>> resObj = (List<Map<String, Object>>) jdbcTemplate1.execute(new PreparedStatementCreator() {

@Override

public PreparedStatement createPreparedStatement(Connection con) throws SQLException {

return con.prepareStatement(sql);

}

}, new PreparedStatementCallback<List<Map<String, Object>>>() {

@Override

public List<Map<String, Object>> doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {

ps.execute();

ResultSet rs = ps.getResultSet();

while(rs.next()){

System.out.println("==" + rs.getString(1));

System.out.println("==" + rs.getString(2));

System.out.println("==" + rs.getString(3));

System.out.println("==" + rs.getString(4));

System.out.println("==" + rs.getString(5));

// Map<String, Object> map = new HashMap<>();

// map.put("id", rs.getString("id"));

}

return null;

}

} );

return resObj;

}

}

6. 启动之后访问:http://localhost:8080/test

看后台有打印结果表示配置成功

相关推荐

jdk17安装和配置环境变量(jdk安装步骤环境变量配置)

简单介绍JDK17是Java的一个长期支持(LTS)版本,于2021年9月发布。作为LTS版本,它将获得Oracle的长期支持,这意味着会获得安全更新和错误修复,直到2...

jdk8安装和配置环境变量(jdk8配置环境变量win10)

简单介绍JDK8是Java开发工具包的一个重大版本,于2014年3月发布。它引入了许多重要的新特性,极大地改进了Java编程的体验,并提高了代码的效率和可读性。总结JDK8是一...

Java开发环境的准备流程!(java开发环境的准备流程有哪些)

准备开发环境工欲善其事,必先利其器。在学习本书的技术内容之前,应先将开发环境搭建好。本书所涉及的基础环境将在本章准备,包括JDK、IntelliJIDEA和Maven。如果读者对这些环境较为熟悉,可...

skywalking-全链路跟踪(链路追踪sleuth)

一、概述1、skywalking简介SkyWalking是一款广受欢迎的国产APM(ApplicationPerformanceMonitoring,应用性能监控)产品,主要针对微服务、Clou...

Oracle项目管理系统之成本状态跟踪

卷首语成本费用管理模块功能分为公司级、项目级两个层级,其中公司级功能包括概预算管理、概预算定额管理、预算模板管理,以及控制估算管理等功能。费用与成本成本费用管理主要是为了合理利用资金资源,控制企业的成...

从入门到精通,Java最全学习路线(java自学路线)

最近好多小伙伴询问,该如何学习java?那些视频适合零基础学习呢?大多数都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,在这给大家整理出一些学习路线。Java学习路线在这...

SPARC M7最新技术 甲骨文首度在台发表

甲骨文首度在台发表SPARCM7最新技术,宣布推出全新SPARC系统產品系列,採用革命性的32内核、256执行绪SPARCM7微处理器。这套SPARC系统提供:先进的入侵防护和加密的Securit...

轻量化的企业级OLAP方案2(轻量化ar)

上一篇文章讲了一个轻量化的企业级OLAP方案,这一篇文章继续介绍另外一个方案。方案2:Greenplum1Greenplum介绍1.1Greenplum概念Greenplum数据库是一种基于Po...

时序数据库在水电站领域的应用(时序数据库优缺点)

大家好,上期经过了王宏志教授对数据库前沿领域的介绍,不知道小伙伴们是否对数据库领域有了更深的认识呢,本期让我们回归时序数据库,再来聊一聊时序数据库在水电站领域的应用。本文仅代表个人观点,如有偏颇之处,...

数据库SQL引擎比较(数据库引擎有哪些,有什么区别)

数据库SQL引擎的典型工作机制及详细分析如下,涵盖查询处理全流程中的核心机制与实际案例:一、SQL引擎核心处理流程1.解析与校验阶段词法/语法解析:SQL语句被拆解为Token序列,构建...

Ubuntu系统密码(root密码)的修改方法

本文介绍在Linux系统的Ubuntu电脑中,修改账户用户密码(同时也修改了root用户密码)的方法。首先,如果此时处于登录页面(也就是意识到自己忘记密码的那个页面),就先点击右上角的关闭按钮...

TablePlus:一个跨平台的数据库管理工具

TablePlus是一款现代化的跨平台(Window、Linux、macOS、iOS)数据库管理工具,提供直观的界面和强大的功能,可以帮助用户轻松管理和操作数据库。TablePlus免费版可以永久...

云满足用户对通过单一视图了解整体运营和数据的需求

ZD至顶网软件频道消息:云在简化IT和业务的同时也带来了新问题,这很有趣,不是吗?毫无疑问,云大幅降低了企业运行基础设施和应用的复杂性和成本;但您仍然面临一个老生常谈的问题——孤岛,只不过这次是在云...

SQL_TOP(显示数据条数)(sqlserver显示查询的行数)

(8)SELECT(9)DISTINCT(11)<topNum><selectlist>(1)FROM[left_table](3)<join_type>...

php搭建小型部门网站(php构建网站)

熟悉前端html,js,css,后端熟悉php,python,java只能称得上一般,还有很多坑待踩。鉴于所学很杂,决定利用对业务的熟悉来搞一个部门网站来简化大家的工作流程。初步设计方案后端用p...

取消回复欢迎 发表评论: