用java web实现mysql做表
时间: 2024-05-11 17:15:21 浏览: 6
假设我们要实现一个用户管理系统,其中需要用到以下表:
- user表:用于存储用户信息,包括用户ID、用户名、密码、邮箱、注册时间等字段。
- role表:用于存储角色信息,包括角色ID、角色名、角色描述等字段。
- user_role表:用于存储用户和角色的关系,包括用户ID和角色ID两个字段。
在Java Web项目中,我们可以使用JDBC连接MySQL数据库,并使用SQL语句创建和操作这些表。
1. 创建数据库和表
首先需要在MySQL中创建一个数据库,假设我们创建的数据库名为user_management。可以使用如下SQL语句:
```
CREATE DATABASE user_management;
```
然后在该数据库中创建user、role和user_role三张表,可以使用如下SQL语句:
```
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
register_time DATETIME NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE role (
id INT(11) NOT NULL AUTO_INCREMENT,
role_name VARCHAR(50) NOT NULL,
description VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE user_role (
user_id INT(11) NOT NULL,
role_id INT(11) NOT NULL,
PRIMARY KEY (user_id, role_id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (role_id) REFERENCES role(id)
);
```
2. 使用JDBC连接MySQL
在Java Web项目中,我们需要使用JDBC连接MySQL数据库。可以使用以下代码实现JDBC连接:
```java
// JDBC连接MySQL
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/user_management?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
```
其中,需要替换url、username和password为自己的MySQL连接信息。
3. 使用SQL语句操作表
在Java Web项目中,我们可以使用SQL语句操作MySQL中的表。例如,使用以下代码向user表中添加一条用户记录:
```java
// 向user表中添加一条用户记录
String sql = "INSERT INTO user (username, password, email, register_time) VALUES (?, ?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.setString(2, "123456");
ps.setString(3, "tom@example.com");
ps.setTimestamp(4, new Timestamp(System.currentTimeMillis()));
ps.executeUpdate();
```
其中,需要替换用户名、密码、邮箱等信息。
使用SQL语句操作其他表也类似,例如使用以下代码向role表中添加一条角色记录:
```java
// 向role表中添加一条角色记录
String sql = "INSERT INTO role (role_name, description) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "admin");
ps.setString(2, "管理员");
ps.executeUpdate();
```
使用以下代码向user_role表中添加一条用户和角色的关系记录:
```java
// 向user_role表中添加一条用户和角色的关系记录
String sql = "INSERT INTO user_role (user_id, role_id) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, userId);
ps.setInt(2, roleId);
ps.executeUpdate();
```
其中,需要替换userId和roleId为自己的用户ID和角色ID。
4. 关闭JDBC连接
在Java Web项目中,需要及时关闭JDBC连接,以释放资源。可以使用以下代码关闭JDBC连接:
```java
// 关闭JDBC连接
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
```
完整代码如下:
```java
// JDBC连接MySQL
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/user_management?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
// 向user表中添加一条用户记录
String sql = "INSERT INTO user (username, password, email, register_time) VALUES (?, ?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.setString(2, "123456");
ps.setString(3, "tom@example.com");
ps.setTimestamp(4, new Timestamp(System.currentTimeMillis()));
ps.executeUpdate();
// 向role表中添加一条角色记录
sql = "INSERT INTO role (role_name, description) VALUES (?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, "admin");
ps.setString(2, "管理员");
ps.executeUpdate();
// 向user_role表中添加一条用户和角色的关系记录
int userId = 1;
int roleId = 1;
sql = "INSERT INTO user_role (user_id, role_id) VALUES (?, ?)";
ps = conn.prepareStatement(sql);
ps.setInt(1, userId);
ps.setInt(2, roleId);
ps.executeUpdate();
// 关闭JDBC连接
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
```