用数据库加JAVA写一个管理用户的接口,接口给到前端

  • Post author:
  • Post category:java


使用MySQL数据库和Java语言编写一个用户管理接口,并将其暴露给前端。

首先,我们需要创建一个名为“users”的MySQL表,用于存储用户信息。该表应包含以下列:id(主键,自动递增),username,password,email。

接下来,我们可以使用Java编写一个名为“User”的类,该类表示一个用户对象,并包含以下属性:id,username,password,email。

“`java

public class User {

private int id;

private String username;

private String password;

private String email;

public User(int id, String username, String password, String email) {

this.id = id;

this.username = username;

this.password = password;

this.email = email;

}

// getters and setters

}

“`

接下来,我们可以编写一个名为“UserDao”的类,该类包含用于与数据库交互的方法。我们将使用JDBC(Java Database Connectivity)库来连接到MySQL数据库。

“`java

import java.sql.*;

import java.util.ArrayList;

import java.util.List;

public class UserDao {

private Connection connection;

public UserDao() {

try {

// 连接到MySQL数据库

Class.forName(“com.mysql.jdbc.Driver”);

String url = “jdbc:mysql://localhost:3306/mydatabase”;

String username = “root”;

String password = “password”;

connection = DriverManager.getConnection(url, username, password);

} catch (ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

}

// 获取所有用户

public List<User> getAllUsers() {

List<User> users = new ArrayList<>();

try {

Statement statement = connection.createStatement();

ResultSet resultSet = statement.executeQuery(“SELECT * FROM users”);

while (resultSet.next()) {

int id = resultSet.getInt(“id”);

String username = resultSet.getString(“username”);

String password = resultSet.getString(“password”);

String email = resultSet.getString(“email”);

User user = new User(id, username, password, email);

users.add(user);

}

} catch (SQLException e) {

e.printStackTrace();

}

return users;

}

// 根据ID获取用户

public User getUserById(int id) {

User user = null;

try {

PreparedStatement preparedStatement = connection.prepareStatement(“SELECT * FROM users WHERE id = ?”);

preparedStatement.setInt(1, id);

ResultSet resultSet = preparedStatement.executeQuery();

if (resultSet.next()) {

String username = resultSet.getString(“username”);

String password = resultSet.getString(“password”);

String email = resultSet.getString(“email”);

user = new User(id, username, password, email);

}

} catch (SQLException e) {

e.printStackTrace();

}

return user;

}

// 添加用户

public void addUser(User user) {

try {

PreparedStatement preparedStatement = connection.prepareStatement(“INSERT INTO users (username, password, email) VALUES (?, ?, ?)”);

preparedStatement.setString(1, user.getUsername());

preparedStatement.setString(2, user.getPassword());

preparedStatement.setString(3, user.getEmail());

preparedStatement.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

// 更新用户

public void updateUser(User user) {

try {

PreparedStatement preparedStatement = connection.prepareStatement(“UPDATE users SET username = ?, password = ?, email = ? WHERE id = ?”);

preparedStatement.setString(1, user.getUsername());

preparedStatement.setString(2, user.getPassword());

preparedStatement.setString(3, user.getEmail());

preparedStatement.setInt(4, user.getId());

preparedStatement.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

// 删除用户

public void deleteUser(int id) {

try {

PreparedStatement preparedStatement = connection.prepareStatement(“DELETE FROM users WHERE id = ?”);

preparedStatement.setInt(1, id);

preparedStatement.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

“`

现在,我们可以编写一个名为“UserController”的类,该类包含用于处理HTTP请求的方法,并使用Gson库将Java对象转换为JSON格式。

“`java

import com.google.gson.Gson;

import spark.Request;

import spark.Response;

import spark.Route;

import java.util.List;

import static spark.Spark.*;

public class UserController {

private UserDao userDao;

private Gson gson;

public UserController() {

userDao = new UserDao();

gson = new Gson();

// 获取所有用户

get(“/users”, new Route() {

@Override

public Object handle(Request request, Response response) throws Exception {

List<User> users = userDao.getAllUsers();

return gson.toJson(users);

}

});

// 根据ID获取用户

get(“/users/:id”, new Route() {

@Override

public Object handle(Request request, Response response) throws Exception {

int id = Integer.parseInt(request.params(“:id”));

User user = userDao.getUserById(id);

if (user != null) {

return gson.toJson(user);

} else {

response.status(404);

return “User not found”;

}

}

});

// 添加用户

post(“/users”, new Route() {

@Override

public Object handle(Request request, Response response) throws Exception {

String body = request.body();

User user = gson.fromJson(body, User.class);

userDao.addUser(user);

response.status(201);

return “User created”;

}

});

// 更新用户

put(“/users/:id”, new Route() {

@Override

public Object handle(Request request, Response response) throws Exception {

int id = Integer.parseInt(request.params(“:id”));

User user = userDao.getUserById(id);

if (user != null) {

String body = request.body();

User updatedUser = gson.fromJson(body, User.class);

updatedUser.setId(id);

userDao.updateUser(updatedUser);

return “User updated”;

} else {

response.status(404);

return “User not found”;

}

}

});

// 删除用户

delete(“/users/:id”, new Route() {

@Override

public Object handle(Request request, Response response) throws Exception {

int id = Integer.parseInt(request.params(“:id”));

User user = userDao.getUserById(id);

if (user != null) {

userDao.deleteUser(id);

return “User deleted”;

} else {

response.status(404);

return “User not found”;

}

}

});

}

public static void main(String[] args) {

new UserController();

}

}

“`

现在,我们可以运行该应用程序,并使用HTTP请求测试用户管理接口。例如,我们可以使用curl命令从命令行发送HTTP GET请求以获取所有用户:

“`

curl http://localhost:4567/users

“`

该请求将返回所有用户的JSON格式列表。我们可以使用类似的方式测试其他HTTP请求。最后,我们可以将该接口暴露给前端,以便用户可以使用Web浏览器或其他HTTP客户端与其进行交互。



版权声明:本文为m0_58517043原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。