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);}
-