(1) SQL
SQL是Structured Query Language的缩写,中文意思为结构化查询语言,是一种用于在关系数据库中进行数据管理和操作的标准语言。SQL可以用来完成创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等操作。SQL是一种非常重要的数据库编程语言,在各种企业应用程序中都有广泛应用。
(2) Mysql
MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现在属于Oracle公司所有。MySQL是一种在Web应用程序中广泛使用的数据库,它具有高效、安全和易用的特点。 MySQL支持多种操作系统,包括Windows、Linux和UNIX等。它也非常灵活,可以与多种编程语言(如PHP、Java、Perl、C++、Python)结合使用。MySQL的开源免费特性,使得它在Web应用程序、企业基础架构和科研领域被广泛应用。
(3) JDBC
JDBC: ( Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套标准API。
它提供了一组用于访问和操作关系数据库的接口。通过JDBC API,Java应用程序可以连接到数据库服务器,执行SQL语句,以及处理查询结果等。
使用JDBC可以实现以下功能:
• 连接到数据库
• 执行SQL语句
• 处理查询结果
• 执行存储过程和函数
• 事务控制
JDBC的工作流程:
- 加载JDBC驱动程序
- 建立数据库连接
- 创建Statement对象或PrepareStatement对象
- 执行SQL语句
- 处理SQL执行结果
- 关闭数据库连接
以下是一个使用JDBC连接到MySQL数据库的示例代码:
(不用掌握,看懂就行)
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
try {
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 建立数据库连接
String url = "jdbc:mysql://localhost:3306/your_database_name";
String user = "your_username";
String password = "your_password";
Connection conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行SQL语句
String sql = "SELECT * FROM your_table_name";
ResultSet rs = stmt.executeQuery(sql);
// 处理查询结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("id: " + id + ", name: " + name);
}
// 关闭数据库连接
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
(4) Mybatis
Mybatis框架,就是对原始的JDBC程序的封装。
Mybatis是一款开源的Java持久层框架,它可以将Java对象与关系型数据库之间进行映射,使Java程序员可以在不必编写过多的JDBC代码的情况下进行CRUD(增删改查)操作。Mybatis主要由三部分组成:SQL映射文件、Java Bean以及映射配置文件。
Mybatis的核心优势如下:
• 简化SQL语句:Mybatis使用半自动化的方式工作,开发人员可以直接使用SQL语句来操作数据库,同时也支持动态SQL语句的使用。
• 更好的可维护性:将SQL语句与Java代码分离可以提高代码的可维护性和可读性。
• 易于集成:Mybatis可以与Spring、Spring Boot等多种框架无缝集成,使开发更加便捷。
Mybatis的使用流程:
- 编写映射配置文件。在映射配置文件中定义Java Bean与SQL语句之间的映射关系。
- 初始化SqlSessionFactory对象。SqlSessionFactory对象是Mybatis的工厂对象,用于创建SqlSession对象。
- 获取SqlSession对象。SqlSession对象是操作数据库的核心对象,它提供了操作数据库所需的所有方法。
- 调用SqlSession对象的方法来操作数据库。其中包括增、删、改、查、事务控制等方法。
以下是一个使用Mybatis操作数据库的示例代码: - 定义Java Bean
public class User {
private int id;
private String name;
private int age;
// getter and setter methods
}
2. 编写SQL映射文件
// 插入新用户
User newUser = new User();
newUser.setName(“小明”);
newUser.setAge(20);
userMapper.insertUser(newUser);
// 更新用户
User updateUser = new User();
updateUser.setId(1);
updateUser.setName(“小红”);
updateUser.setAge(30);
userMapper.updateUser(updateUser);
// 删除用户
userMapper.deleteUserById(1);
// 提交事务
sqlSession.commit();
// 关闭SqlSession
sqlSession.close();
(5) 数据库连接池
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
没有使用数据库连接池:
• 客户端执行SQL语句:要先创建一个新的连接对象,然后执行SQL语句,SQL语句执行后又需要关闭连接对象从而释放资源
• 每次执行SQL时都需要创建连接、销毁链接,这种频繁的重复创建销毁的过程是比较耗费计算机的性能。
使用数据库连接池:
• 程序在启动时,会在数据库连接池(容器)中,创建一定数量的Connection对象
• 客户端在执行SQL时,先从连接池中获取一个Connection对象,然后在执行SQL语句,SQL语句执行完之后,释放Connection时就会把Connection对象归还给连接池(Connection对象可以复用)
• 客户端获取到Connection对象,但是Connection并没有去访问数据库,数据库连接池发现Connection空闲时间 > 连接池中预设的最大空闲时间,数据库连接池就会自动释放掉这个连接对象
数据库连接池的好处:
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
常见的数据库连接池:
• C3P0
• DBCP
• Druid (是阿里巴巴开源的数据库连接池项目,功能强大,性能优秀,是Java语言最好的数据库连接池之一)
• Hikari (springboot默认)
把默认的数据库连接池切换为Druid数据库连接池:
参考官方地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
- 在pom.xml文件中引入依赖
com.alibaba
druid-spring-boot-starter
1.2.8
- 在application.properties中引入数据库连接配置
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.druid.username=root
spring.datasource.druid.password=1234