## Java连接MySQL数据库代码详解
### 引言
在现代软件开发中,数据库扮演着至关重要的角色,Java作为一门广泛应用的编程语言,通过JDBC(Java Database Connectivity)提供了与各种数据库交互的标准API,本文将详细介绍如何在Java项目中实现与MySQL数据库的连接并进行数据操作,包括使用JDBC和连接池技术。
### 一、准备工作
#### 1. 安装MySQL数据库
确保你已经安装了MySQL数据库,可以通过[MySQL官网](https://dev.mysql.com/downloads/)下载并安装适合你操作系统的版本。
#### 2. 创建数据库和表
登录到MySQL命令行工具,创建一个名为`testdb`的数据库,并在其中创建一个名为`employees`的表:
```sql
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
position VARCHAR(50) NOT NULL,
salary DECIMAL(10, 2) NOT NULL
);
```
插入一些测试数据:
```sql
INSERT INTO employees (name, position, salary) VALUES ('Alice', 'Engineer', 7000.00);
INSERT INTO employees (name, position, salary) VALUES ('Bob', 'Manager', 8000.00);
```
#### 3. 添加MySQL Connector/J依赖
如果你使用Maven构建工具,在`pom.xml`文件中添加以下依赖:
```xml
```
如果不使用Maven,可以从MySQL官网下载`mysql-connector-java-8.0.32.jar`并将其添加到项目的类路径中。
### 二、使用JDBC连接MySQL
#### 1. 加载驱动
首先需要加载MySQL的JDBC驱动:
```java
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
```
> 注意:对于MySQL 8及以上版本,建议使用`com.mysql.cj.jdbc.Driver`而不是旧版的`com.mysql.jdbc.Driver`。
#### 2. 建立连接
通过`DriverManager`获取数据库连接:
```java
String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=false";
String user = "root";
String password = "password";
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功!");
} catch (SQLException e) {
e.printStackTrace();
```
> `useUnicode=true&characterEncoding=utf8&useSSL=false`参数确保了编码和SSL的正确处理。
#### 3. 执行SQL查询
通过`Statement`对象执行SQL查询并处理结果集:
```java
String sql = "SELECT * FROM employees";
try (Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String position = resultSet.getString("position");
double salary = resultSet.getDouble("salary");
System.out.printf("ID: %d, Name: %s, Position: %s, Salary: %.2f%n", id, name, position, salary);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
```
> 这里使用了Java 7引入的try-with-resources语句,确保`ResultSet`和`Statement`在使用完毕后自动关闭。
### 三、使用连接池优化连接管理
#### 1. 引入HikariCP依赖
如果你使用Maven,添加以下依赖:
```xml
```
#### 2. 配置和使用连接池
创建一个名为`DataSourceFactory`的工厂类:
```java
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
public class DataSourceFactory {
private static HikariDataSource dataSource;
static {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=false");
config.setUsername("root");
config.setPassword("password");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
dataSource = new HikariDataSource(config);
}
public static DataSource getDataSource() {
return dataSource;
}
```
#### 3. 使用连接池获取连接
```java
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class HikariCPExample {
public static void main(String[] args) {
DataSource dataSource = DataSourceFactory.getDataSource();
try (Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM employees")) {
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String position = resultSet.getString("position");
double salary = resultSet.getDouble("salary");
System.out.printf("ID: %d, Name: %s, Position: %s, Salary: %.2f%n", id, name, position, salary);
}
} catch (Exception e) {
e.printStackTrace();
}
}
```
> **优势**:
- **性能提升**:连接池通过复用现有连接,减少了频繁创建和销毁连接的开销。
- **资源管理**:连接池可以有效管理连接的生命周期,防止连接泄漏。
- **高可用性**:在连接池配置中可以设置连接的最小空闲数、最大空闲数等参数,确保系统在高并发下的稳定性。
### 四、使用ORM框架简化数据库操作(以MyBatis为例)
#### 1. 引入MyBatis依赖
如果使用Maven,添加以下依赖:
```xml
```
#### 2. 配置MyBatis
创建`mybatis-config.xml`配置文件:
```xml
随着互联网的普及和信息技术的飞速发展台湾vps云服务器邮件,电子邮件已经成为企业和个人日常沟通的重要工具。然而,传统的邮件服务在安全性、稳定性和可扩展性方面存在一定的局限性。为台湾vps云服务器邮件了满足用户对高效、安全、稳定的邮件服务的需求,台湾VPS云服务器邮件服务应运而生。本文将对台湾VPS云服务器邮件服务进行详细介绍,分析其优势和应用案例,并为用户提供如何选择合适的台湾VPS云服务器邮件服务的参考建议。
工作时间:8:00-18:00
电子邮件
1968656499@qq.com
扫码二维码
获取最新动态