当前位置: 首页 > news >正文

Springboot+Druid(可切换Hikari)+Mybatis-plus+mysql+hive的多数据源项目配置

1.搭建一个springboot项目,不会的搜一下,很简单这里不做赘述。

2.首先你搭建的springboot能正常启动之后,pom文件添加如下依赖:

 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> <!-- 选择自己合适的版本,druid连接池依赖,Hikari是springboot自带的不用引入依赖 --></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><!--Mybatis-plus依赖--><version>3.5.9</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源依赖 --><version>3.5.0</version></dependency><!--hive依赖,自行选择版本--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>4.0.1</version><classifier>standalone</classifier><exclusions><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.apache.hive</groupId><artifactId>hive-shims</artifactId></exclusion><exclusion><groupId>org.glassfish</groupId><artifactId>javax-el</artifactId></exclusion><!-- 其他可能的排除项 --></exclusions></dependency>

3.编写yaml文件(这里的druid其他自定义参数没配置,可自行查阅资料完善,以下配置能支持一般使用):

spring:datasource:dynamic:primary: mysqlstrict: falsedatasource:mysql:url: jdbc:mysql://你的IP:端口/数据库?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=trueusername: rootpassword: wC62vHcv43!e#hive配置hive:url: 你的urlusername: usernamepassword: passworddriver-class-name: org.apache.hive.jdbc.HiveDriverhikari:      #只是为了让控制台不警告,可选,不影响使用connection-timeout: 30000  # 连接超时时间(毫秒)validation-timeout: 5000   # 验证超时时间(毫秒)

4.到此,配置以及准备完成,编写两个数据源的bean配置类:

mysql配置类:

@Configuration
public class MysqlDataSourceConfig {@Value("${spring.datasource.dynamic.datasource.mysql.url}")private String mysqlUrl;@Value("${spring.datasource.dynamic.datasource.mysql.username}")private String mysqlUsername;@Value("${spring.datasource.dynamic.datasource.mysql.password}")private String mysqlPassword;@Bean(name = "mysqlDataSource")@Primary  // 默认数据源public DataSource mysqlDataSource() {DruidDataSource config = new DruidDataSource(); //换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();config.setUrl(mysqlUrl);config.setUsername(mysqlUsername);config.setPassword(mysqlPassword);return config;}@Bean(name = "mysqlJdbcTemplate")public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}
}

hive配置类:

@Configuration
public class HiveDataSourceConfig {@Value("${spring.datasource.dynamic.datasource.hive.url}")private String hiveUrl;@Value("${spring.datasource.dynamic.datasource.hive.username}")private String hiveUsername;@Value("${spring.datasource.dynamic.datasource.hive.password}")private String hivePassword;@Value("${spring.datasource.dynamic.datasource.hive.driver-class-name}")private String hiveDriverClassName;@Bean(name = "hiveDataSource")public DataSource hiveDataSource() {DruidDataSource config = new DruidDataSource();//换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();config.setUrl(hiveUrl);config.setUsername(hiveUsername);config.setPassword(hivePassword);config.setDriverClassName(hiveDriverClassName);return config;}@Bean(name = "hiveJdbcTemplate")public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}
}

5.使用:

至于mysql,正常照mybatisplus的使用,mapper,service调用即可

对于hive:

在需要用到的类注入

@Resource
@Qualifier("hiveJdbcTemplate")
private JdbcTemplate hiveJdbcTemplate;

使用这个template去执行SQL即可:

  public void test(){String query="******"hiveJdbcTemplate.execute(query);}  

那么,简述一下Druid和Hikari的区别吧:

1. 设计目标
  • Druid:由阿里巴巴开发,不仅是一个高性能的数据库连接池,还集成了监控、SQL解析和执行计划分析等功能。它被设计为一个综合性的数据库连接管理和优化工具。
  • HikariCP:由Brett Wooldridge创建,专注于成为最快速、最小化开销的连接池。它的设计理念是简单、高效,只做连接池该做的事情,不做过多的附加功能。
2. 性能
  • Druid:虽然Druid也具有良好的性能表现,但其丰富的特性可能会带来额外的开销。在某些情况下,这些附加功能(如SQL解析、日志记录等)可能会影响性能。
  • HikariCP:以其出色的性能著称,尤其是在高并发环境下,HikariCP通常比其他连接池更快。它通过减少锁争用和其他优化技术来达到这一点。
3. 配置复杂度
  • Druid:提供了大量的配置选项,允许用户根据需要进行详细的调整。这使得它非常适合那些对连接池有特定需求的应用程序,但也可能增加了配置的复杂性。
  • HikariCP:配置相对简单,只有几个关键参数需要设置。对于大多数应用程序来说,默认配置已经足够好,不需要太多的调整。
4. 监控和诊断
  • Druid:内置了强大的监控和统计功能,可以实时查看连接池的状态、SQL执行情况等。这对于调试和性能优化非常有用。
  • HikariCP:没有内置的监控功能,但是可以通过集成外部监控工具(如Micrometer)来实现监控。HikariCP的设计哲学是保持核心功能的简洁性,将监控等功能留给第三方库处理。

至此,搭建完成,有问题的可评论区留言。

相关文章:

Springboot+Druid(可切换Hikari)+Mybatis-plus+mysql+hive的多数据源项目配置

1.搭建一个springboot项目&#xff0c;不会的搜一下&#xff0c;很简单这里不做赘述。 2.首先你搭建的springboot能正常启动之后&#xff0c;pom文件添加如下依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</arti…...

Git使用步骤

Git 是一个分布式版本控制系统&#xff0c;广泛用于软件开发和其他需要跟踪文件变更的项目。以下是 Git 的基本使用方法和一些常用命令的详细说明。 安装 Git 在大多数操作系统上&#xff0c;你可以通过包管理器安装 Git&#xff1a; Windows: 下载并安装 Git for Windows。…...

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天&#xff0c;用 Python 和 OpenCV 结合机器学习实现物体识别&#xff0c;不仅是酷炫技能&#xff0c;更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入&#xff0c;识别人、动物、车辆及其他物品&#xff0c;让你的程序瞬间具备 AI …...

springboot449教学资源共享平台(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统教学资源共享平台信息管理难度大&#xff0c;容错率低&am…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 4

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3.目录遍历 1.4. 敏感信息 2.漏洞发现 2.1.登录框万能密码 2.2.系统用户密码-ssh链接 2.3.mysql-udf提权 一、前情提要 kali黑客-利用searchsploit搜索exp一键化攻击-CSDN博客 一篇文章带你理…...

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…...

POD 存储、PV、PVC

目录 容器如何持久化存储&#xff1f; PV和PVC 为什么不能直接在 Pod 或容器中存储数据&#xff1f; 什么是 PV和 PVC&#xff1f; 可以使用本地磁盘空间创建PV吗&#xff1f; 如何让客户端通过ftp上传到远端服务器的POD里面&#xff1f; 另一个POD想访问ftp的POD里面的…...

C中strlen和sizeof的区别

1、代码如下&#xff1a; #include<stdio.h>int main() {char a[10] { h,e,l,l,0};printf("%d\n",strlen(a));printf("%d\n", sizeof(a));return 0; } 2、运行结果如下&#xff1a;...

WSL2内部的Ubuntu怎么设置网络内桥接模式,弄了好久老是不成功,怎么办?

环境: Win10专业版 WSL2 Ubuntu22.04 问题描述: WSL2内部的Ubuntu怎么设置网络内桥接模式 解决方案: 方法一 1.控制面板开启,Hyper-V 管理器 2.重启电脑 3…创建外部虚拟交换机 打开 Hyper-V 管理器,在右侧操作面板中点击“虚拟交换机管理器”。 选择“创建虚…...

Linux环境下 搭建ELk项目 -单机版练习

前言 ELK 项目是一个由三个开源工具组成的日志处理和分析解决方案&#xff0c;ELK 是 Elasticsearch、Logstash 和 Kibana 的首字母缩写。这个项目的目标是帮助用户采集、存储、搜索和可视化大量的日志和事件数据&#xff0c;尤其是在分布式系统中。下面是每个组件的概述&…...

ubuntu20.04安装mysql5.7

安装之前要确保之前没安装过或者安装后卸载干净了&#xff0c;不然后面的配置文件可能会报错。 1. 下载安装包 打开链接 downloads.mysql.com/archives/co… 选择相应版本进行下载&#xff0c;这里mysql版本选择 5.7.35&#xff0c;系统选择Ubuntu Linux&#xff0c;选择64位…...

MacPorts 安装 Tengine

创建 Portfile 以下是我参考 nginx 调整后的 Portfile&#xff0c;如需安装指定版本&#xff0c;除了修改版本号之外还需要修改 checksums 里的 sha256 sha256 值需下载 Tengine 源码文件&#xff08;tar.gz&#xff09;进行计算 模块的调整在最后的 configure.args-append …...

Git安装及基础学习

Git学习 Git安装 概述&#xff1a; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理 从很小到非常大的项目版本管理&#xff0c;是目前使用范围最广的版本 管理工具。 下载安装&#xff1a; 下载地址&#xff1a;https://git-scm.com/ 下载后傻瓜式一键安…...

【celery】任务有时候不执行

celery任务有时执行&#xff0c;有时不执行&#xff0c;这种情况是任务被冒领&#xff1b;有时执行说明这个方法可以使用&#xff0c;有时不执行通常是被使用同一个消息队列的进程冒领了&#xff1b; 解决 Redis&#xff1a;指定一个分块就行了...

【恶意软件检测论文】通过提取 API 语义来实现的一个新颖的安卓恶意软件检测方法

目录 摘要1. 引言2. 相关工作2.1. 基于重新训练的恶意软件检测2.2. 基于应用关系图的恶意软件检测2.3. 基于异常样本识别的恶意软件检测2.4. 基于API聚类的恶意软件检测 3. AMDASE概述4. 基于语义距离的API聚类4.1. API特征提取4.2. API句子生成4.3. API句子编码4.4.聚类中心生…...

什么,不用 Tomcat 也能运行 Java web?

在 Java web 开发领域&#xff0c;传统的 Tomcat 服务器一直占据着重要地位。但如今&#xff0c;Blade 框架的出现为我们提供了一种全新的开发体验&#xff0c;它无需依赖 Tomcat 便可运行 Java web 应用。 一、Blade 框架简介 是一款轻量级且高性能的 Java web 框架。其设计理…...

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 1 构建快速验证手机号Button

场景介绍 快速验证手机号Button功能用于帮助开发者向用户发起手机号申请&#xff0c;应用在满足《常见类型移动互联网应用程序必要个人信息范围规定》&#xff08;对第三方网站的内容&#xff0c;华为公司不承担任何责任&#xff09;中使用手机号的必要业务场景&#xff0c;经…...

王佩丰24节Excel学习笔记——第十一讲:Vlookup函数

【以 Excel2010 系列学习&#xff0c;用 Office LTSC 专业增强版 2021 实践】 【本章小技巧】 掌握vlookup使用方法&#xff0c;选区的第一列一定是查询参数条件一。使用通配符查询。vlookup 限 255 位长度。掌握日常使用场景。使用vlookup模糊匹配查询个税 一、使用Vlookup函…...

【QT实战の心情笔记】

文章目录 界面布局主要界面分为三部分&#xff1a;1. 笔记列表区域2. 笔记内容编辑区域3. 操作按钮区域 Qt Designer 界面设计步骤完整界面布局图各控件设置和属性Qt Designer 文件 (.ui) 数据库表结构SQL 表结构&#xff1a; 逻辑代码1. 项目结构2. Note 类 (Note.h 和 Note.c…...

图像生成工具WebUI

介绍 Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。如今各种人工智能满天飞&…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...