JDBC介绍

JDBC介绍

  • JDBC就是使用java语言来操作数据库的一套API,可以操作不同类型的关系性数据库。各种数据库编写自己数据库的驱动来实现JDBC这套接口,从而实现通过java代码来操作不同类型的关系性数据库。
  • 各个数据库的驱动jar包就是实现该接口的实现类,以达到可以使用java代码来操作自己数据库的目的。
  • 我们通过该接口编程,真正实现我们对于数据库操作的代码在驱动的jar包中
  • 由此,我们导入不同的数据库的驱动jar包,就可以通过jdbc编程来实现对于不同数据库的操作,即我们只需要学习jdbc就可以了。后面学习的MyBatis底层就是JDBC实现的。

JDBC快速入门

步骤
  • 创建工程,导入驱动包(我使用maven导入依赖)
  • 注册驱动(使用哪个驱动jar包)
  • 获得连接(连接数据库)
  • 定义SQL语句
  • 获取执行SQL语句对象
  • 执行SQL
  • 处理结果返回
  • 释放资源

JDBC API详解

  • URL:连接路径
    • 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2....
    • 示例如上
    • 细节:
      • 如果连接本地mysql服务器,并且mysql服务器默认端口为3306,则url可以简写为jdbc:mysql:///数据库名称?参数键值对1&参数键值对2....,配置useSSL=false,解除安全连接方式,解除警告提示。

数据库连接池

数据库连接池简介

  • 数据库连接池是一个容器(首先初始化该容器,将与数据库的连接创建好,用户要连接数据库,直接使用准备好的连接对象,使用完后,在放在容器中,就不会出现用户请求一次数据库就创建一次连接,用完之后就释放资源,再使用再创建。),负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再建立一个
  • 释放空闲空间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
  • 好处
    • 资源重用
    • 提升系统响应速度
    • 避免数据库遗漏(如果某一用户一直使用一个连接对象,系统会将该连接回收,供其它用户使用,从而将就避免数据库的遗漏)
  • 常见的数据连接池
    • DBCP
    • C3P0
    • Druid
      • 德鲁伊连接池是阿里巴巴开源的数据库连接池项目
      • 功能强大、性能优秀、是java语言最好的数据库连接池之一

Druid数据库连接池

步骤
  • 导入jar包(maven依赖)
    • <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version>
      </dependency>
      <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version>
      </dependency>
      <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.15.0</version>
      </dependency>
      <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.15.0</version>
      </dependency>
      
  • 定义配置文件(主要是于数据库连接的信息)
    • # ???????
      url=jdbc:mysql://localhost:3306/db02
      username=root
      password=123456
      driverClassName=com.mysql.jdbc.Driver# ????????
      initialSize=5
      spring.datasource.min-idle=5
      maxActive=50
      maxWait=60000
  • 加载配置文件
  • 获取连接池对象
    •     public static void main(String[] args) throws Exception {
      //        记载配置文件Properties properties = new Properties();properties.load(new FileInputStream("src/Druid.properties"));
      //        建立连接DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
      //        获取连接池对象Connection connection = dataSource.getConnection();System.out.println(connection);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/129161.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 143.重排链表

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 分析题目后我们可以直接进行模拟实现。 具体用到的就是我们之前的知识的结合&#xff0c;首先使用快慢指针找到链表的中间结点。然后将后半段链表给翻转一下&#xff0c;然后再让这…

【AI】深度学习——人工智能、深度学习与神经网络

文章目录 0.1 如何开发一个AI系统0.2 表示学习(特征处理)0.2.1 传统特征学习特征选择过滤式包裹式 L 1 L_1 L1​ 正则化 特征抽取监督的特征学习无监督的特征学习 特征工程作用 0.2.2 语义鸿沟0.2.3 表示方式关联 0.2.4 表示学习对比 0.3 深度学习0.3.1 表示学习与深度学习0.3.…

Prompt-Tuning(一)

一、预训练语言模型的发展过程 第一阶段的模型主要是基于自监督学习的训练目标&#xff0c;其中常见的目标包括掩码语言模型&#xff08;MLM&#xff09;和下一句预测&#xff08;NSP&#xff09;。这些模型采用了Transformer架构&#xff0c;并遵循了Pre-training和Fine-tuni…

System Generator学习——使用 AXI 接口和 IP 集成器

文章目录 前言一、目标二、步骤1、检查 AXI 接口2、使用 System Generator IP 创建一个 Vivado 项目3、创建 IP 集成设计&#xff08;IPI&#xff09;4、实现设计 总结 前言 在本节中&#xff0c;将学习如何使用 System Generator 实现 AXI 接口。将以 IP 目录格式保存设计&am…

《DevOps 精要:业务视角》- 读书笔记(三)

DevOps 精要:业务视角&#xff08;三&#xff09; 第3章 原则3.1 价值流3.2 部署流水线3.3 一切都应存储在版本控制系统中3.4 自动化配置管理3.5 完成的定义3.6 小结 第3章 原则 将原则从实践中分离出来&#xff0c;这是一种很有用的做法。当然了&#xff0c;这两个词分别有着…

【计算机网络黑皮书】传输层

【事先声明】 这是对于中科大的计算机网络的网课的学习笔记&#xff0c;感谢郑烇老师的无偿分享 书籍是《计算机网络&#xff08;自顶向下方法 第6版&#xff09;》 需要的可以私信我&#xff0c;无偿分享&#xff0c;课程简介下也有 课程链接 目录 传输服务与协议网络层与传输…

Vue3实现div拖拽改变宽高

效果图如下&#xff1a; 底部拖拽按钮点击拖拽可自定义父容器的宽高 <template><div id"business_plane"><div class"business_plane" ref"container"><div class"darg_tool"><el-icon class"drag_H…

LeetCode 1277. 统计全为 1 的正方形子矩阵【动态规划】1613

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

JAVA NIO深入剖析

4.1 Java NIO 基本介绍 Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方…

动态代理IP常见超时原因及解决方法

在使用动态代理IP时&#xff0c;常常会遇到代理超时的问题。网络环境的不稳定性以及代理IP的质量问题&#xff0c;都可能会引起代理超时。这种情况下&#xff0c;代理服务器无法在规定时间内响应我们的请求&#xff0c;导致请求失败。 使用动态代理IP时&#xff0c;哪些原因会引…

基于docker+Keepalived+Haproxy高可用前后的分离技术

基于dockerKeepalivedHaproxy高可用前后端分离技术 架构图 服务名docker-ip地址docker-keepalived-vip-iphaproxy-01docker-ip自动分配 未指定ip192.168.31.252haproxy-02docker-ip自动分配 未指定ip192.168.31.253 安装haproxy 宿主机ip 192.168.31.254 宿主机keepalived虚…

C++中的对象切割(Object slicing)问题

在C中&#xff0c;当我们把派生类对象向上强制转型为基类对象时&#xff0c;会造成对象切割&#xff08;Object slicing&#xff09;问题。  请看下面示例代码&#xff1a; #include <iostream> using namespace std;class CBase { public:virtual ~CBase() default;v…