网站首页 > 技术文章 正文
你是否曾经感到困惑,当谈到数据库驱动、Druid和MyBatis时,他们的关系是如何串联起来的?是的,这些都是非常基础的概念,但是理顺它们的关系很多人就开始犯迷糊了。一些开发人员按照现成的开源框架模仿着开发,知道在哪些目录下写什么格式的文件,但是却不理解他们之间到底是什么关系,怎么串联起来的。今天我们就来简单的梳理一下。
数据库驱动:数据库驱动是一个软件组件,针对不同的数据库有不同的数据库驱动,比如MySQL驱动、Oracle驱动等,数据库驱动使Java应用程序能够与数据库进行通信。它负责建立与数据库服务器的连接、发送SQL查询,并处理服务器返回的结果。该驱动在Java应用程序与数据库之间充当桥梁,使它们能够无缝交互。如果没有数据库驱动,Java应用程序将无法与MySQL/Oracle等数据库进行交互。
我们常使用的数据库有Oracle、MySQL、SQL Server、DB2、PostgreSQL、SQLite等,小编最常使用的是Oracle和MySQL,这里就以Oracle和MySQL为例。
MySQL常使用5.x 和8.x两个版本,使用的MySQL驱动有 mysql-connector-java-5.1.47.jar、mysql-connector-java-8.0.22.jar。
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
Oracle常使用12.2.x版本,ojdbc8-12.2.0.1.jar。
<!--oracle驱动-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
Druid :Druid是阿里巴巴开源的JDBC(Java数据库连接)组件库。它提供高性能、可靠、高效的连接池解决方案,用于Java应用程序中的数据库连接管理。连接池帮助管理和重用数据库连接,减少为每个请求建立新连接的开销。除了连接池功能外,Druid还包括SQL解析、日志记录和监控等特性,因此在Java应用程序中管理数据库连接时,Druid是一个受欢迎的选择。
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
username: root
password: root
# 数据源其它配置
druid:
#避免db单方面关闭连接,如mysql:show variables like '%timeout%',关注interactive_timeout和wait_timeout,默认8小时
#常见错误:The last packet successfully received from the server was 46170 milliseconds ago
#解决办法:1.miEvictableIdleTimeMillis < maxEvictableIdleTimeMillis
# 2.maxEvictableIdleTimeMillis + timeBetweenEvictionRunsMillis < 8h
initial-size: 5 #初始化连接池大小
min-idle: 3 #最小连接数
max-active: 20 #最大连接数
max-wait: 60000 #最长等待时间
#单位:ms,默认1min,两个作用
#1.Destroy线程运行周期,每隔多久运行一次,配合min-evictable-idle-time-millis和max-evictable-idle-time-millis使用;
#2.若testWhileIdle为true,申请连接时,若空闲时间大于time-between-eviction-runs-millis,则执行validation-query语句检测连接是否有效。
time-between-eviction-runs-millis: 6000 #关闭空闲连接间隔(ms)
# 单位:ms,连接保持空闲而不被驱逐的最小时间,默认30min
#连接被destroy线程关闭条件:大于minIdle且空闲时间大于1800000
min-evictable-idle-time-millis: 1800000
# 单位:ms,连接保持空闲而不被驱逐的最大时间,默认7h
#连接被destroy线程关闭条件:空闲时间只要大于25200000就关闭连接,不管池中连接数是否大于minIdle
max-evictable-idle-time-millis: 25200000
validation-query: SELECT 1 #数据库状态检测
test-while-idle: true #判断连接是否可用
test-on-borrow: false #在获得连接前是否要进行测试
test-on-return: false #在归还连接前是否要进行测试
pool-prepared-statements: false #不缓存pstmt,oracle可以配true
max-pool-prepared-statement-per-connection-size: 20 #配置pstmt缓存个数
filters: stat,wall,slf4j
#配置servlet,开启druid登录页和首页
stat-view-servlet:
enabled: true
login-username: admin
login-password: admin
#监控页面访问路径
url-pattern: /druid/*
#是否允许重置,一般不允许
reset-enable: false
#白名单
allow: 127.0.0.1
#黑名单
deny: 192.168.0.1
MyBatis:MyBatis是一个流行的Java持久层框架,简化了与数据库的交互。它提供了将Java对象映射到SQL语句及其反向操作的方法,从而减少了数据库访问所需的样板代码。MyBatis允许开发人员在XML或注解中编写SQL查询,并处理将结果映射到Java对象的工作。它被视为一个对象关系映射(ORM)工具,并且可以与多种数据库系统一起使用。
从上面可以看出,mysql驱动是使Java应用程序能够与MySQL数据库进行通信的关键组件,durid是一个数据库连接池库,提供高性能的连接管理功能,而mybatis是一个持久层框架,简化了Java应用程序与数据库之间的交互,可以通过XML或注解编写SQL查询。这三者共同组成了一个强大的栈,使Java开发人员能够高效地与MySQL数据库进行交互,并减少样板代码的编写。
数据库驱动、Druid、MyBatis三者之间的关系:
借用别人说的一个例子:把 MyBatis 比作是警察,Druid 比作武器库(库里存放了很多枪)),数据库驱动比作武器制造商(他们制造抢给武器库);当平民百姓遇到危险需要寻求帮助时,第一时间寻找警察,警察从武器库拿枪干活。也就是先访问 MyBatis,MyBatis 与 Druid通信,Druid 与 数据库驱动 通信,数据库驱动 与底层数据库交互。
猜你喜欢
- 2025-07-23 国产化红利到底在哪?好多人都在瞎折腾
- 2025-07-23 Oracle 推出 Java 24,增强 AI 支持和后量子加密
- 2025-07-23 JAVA桥接模式适用场景,优缺点是什么你知道吗,这篇文章彻底讲透
- 2025-07-23 SpringBoot条件化配置(@Conditional)全面解析与实战指南
- 2024-10-26 一个前后端分离的Java快速开发平台platform-plus
- 2024-10-26 Oracle-MySQL透明网关配置中关于Driver的坑
- 2024-10-26 pycharm连接数据库失败的解决方法!pycharm连接数据库报错原因!
- 2024-10-26 埃里森炮轰亚马逊AWS不安全,发布Oracle云2.0
- 2024-10-26 JDBC常用的几款数据库驱动程序名及URL
- 2024-10-26 重磅!Spring Boot 2.6 正式发布,一大波新特性,看完我彻底躺平了
你 发表评论:
欢迎- 628℃几个Oracle空值处理函数 oracle处理null值的函数
- 621℃Oracle分析函数之Lag和Lead()使用
- 610℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 604℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 602℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 594℃【数据统计分析】详解Oracle分组函数之CUBE
- 584℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 568℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- oracle 19cOCM认证有哪些内容(oracle认证ocm月薪)
- Oracle新出AI课程认证,转型要持续学习
- oracle 表的查询join顺序,可能会影响查询效率
- Oracle DatabaseAmazon Web Services正式可用,Oracle数据库上云更容易了
- Oracle 19.28 RU 升级最佳实践指南
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 如何主导设计一个亿级高并发系统架构-数据存储架构(三)
- Java 后端开发必看!工厂设计模式轻松拿捏
- ORA-00600 「25027」 「x」报错(抱错孩子电视剧 爸爸是武术 另一个爸爸是画家)
- 新项目终于用上了jdk24(jdk新建项目)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)