实现了UserDao

This commit is contained in:
2025-12-07 22:27:18 +08:00
parent 3858a11a40
commit 8b7df8d9ff
14 changed files with 161 additions and 40 deletions

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -7,5 +7,6 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="mysql-connector-j-8.0.33" level="project" />
</component>
</module>

View File

@@ -1,4 +1,5 @@
package backend;
public class Main {
}

View File

@@ -5,7 +5,7 @@ import backend.service.interfaces.AuthService;
* 登录控制器接口,用于处理用户登录和注册相关的业务逻辑
*/
public interface LoginController {
AuthService authService;
// AuthService authService;
//getter/setter

View File

@@ -6,7 +6,7 @@ import backend.service.interfaces.DataQueryService;
* 定义了数据查询和管理的相关操作接口
*/
public interface QueryController {
DataQueryService dataService;
// DataQueryService dataService;
//getter/setter
/**

View File

@@ -6,7 +6,7 @@ import backend.service.interfaces.UserService;
* 定义了用户管理相关的核心操作方法
*/
public interface UserController {
UserService userService;
// UserService userService;
//getter/setter

View File

@@ -0,0 +1,137 @@
package backend.dao.impl;
import backend.dao.interfaces.UserDaoIF;
import backend.model.User;
import backend.utils.DBHelper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class UserDao implements UserDaoIF {
@Override
public User findByUsername(String username) {
User user = null;
//1. 从连接池中创建数据库连接
Connection conn = DBHelper.getInstance().getConnection();
//2. 创建Statement对象
String sql = "select username,password,role,email,createdAt from USER where username = ?";
try {
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
user = new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setRole(rs.getString("role"));
user.setEmail(rs.getString("email"));
user.setCreatedAt(rs.getTimestamp("createdAt"));
}
} catch (SQLException e) {
System.out.println("查询用户失败: " + e.getMessage());
}
return user;
}
@Override
public User findById(int id) {
User user = null;
//1. 从连接池中创建数据库连接
Connection conn = DBHelper.getInstance().getConnection();
//2. 创建Statement对象
String sql = "select username,password,role,email,createdAt from USER where id = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1,id);
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
user = new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setRole(rs.getString("role"));
user.setEmail(rs.getString("email"));
user.setCreatedAt(rs.getTimestamp("createdAt"));
}
}catch (SQLException e) {
System.out.println("查询用户失败: " + e.getMessage());
}
return user;
}
@Override
public boolean addUser(User user) {
Connection conn = DBHelper.getInstance().getConnection();
String sql = "insert into USER (username,password,role,email,createdAt) values (?,?,?,?,?)";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1,user.getUsername());
stmt.setString(2,user.getPassword());
stmt.setString(3,user.getRole());
stmt.setString(4,user.getEmail());
stmt.setTimestamp(5,user.getCreatedAt());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
System.out.println("添加用户失败: " + e.getMessage());
}
return false;
}
@Override
public boolean updateUser(User user) {
Connection conn = DBHelper.getInstance().getConnection();
String sql = "update USER set username = ?,password = ?,role = ?,email = ?,createdAt = ? where id = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1,user.getUsername());
stmt.setString(2,user.getPassword());
stmt.setString(3,user.getRole());
stmt.setString(4,user.getEmail());
stmt.setTimestamp(5,user.getCreatedAt());
stmt.setInt(6,user.getId());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
System.out.println("更新用户失败: " + e.getMessage());
}
return false;
}
@Override
public boolean deleteUser(int id) {
Connection conn = DBHelper.getInstance().getConnection();
String sql = "delete from USER where id = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1,id);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
System.out.println("删除用户失败: " + e.getMessage());
}
return false;
}
@Override
public List<User> findAll() {
Connection conn = DBHelper.getInstance().getConnection();
String sql = "select id,username,password,role,email,createdAt from USER";
try {
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setRole(rs.getString("role"));
user.setEmail(rs.getString("email"));
user.setCreatedAt(rs.getTimestamp("createdAt"));
return List.of(user);
}
}catch (SQLException e) {
System.out.println("查询所有用户失败: " + e.getMessage());
}
return List.of();
}
}

View File

@@ -7,7 +7,7 @@ import java.util.*;
* 用户数据访问接口
* 定义了用户相关的数据库操作方法
*/
public interface UserDao {
public interface UserDaoIF {
/**
* 根据用户名查找用户
* @param username 用户名

View File

@@ -91,7 +91,7 @@ public class User {
*
* @param createdAt 用户创建时间
*/
public void setCreatedAt(Date createdAt) {
public void setCreatedAt(Timestamp createdAt) {
this.createdAt = createdAt;
}
@@ -145,7 +145,7 @@ public class User {
*
* @return 用户创建时间
*/
public Date getCreatedAt() {
public Timestamp getCreatedAt() {
return createdAt;
}
}

View File

@@ -8,9 +8,9 @@ public class DBHelper {
/*** 以下请根据实际情况修改 ****/
private static final String IP = "kronecker.cc"; // ip地址
private static final String PORT = "3306"; // 端口
private static final String DB_NAME = "CET4"; // 数据库名
private static final String USER = "kronecker";
private static final String PASSWORD = "20060825fhy.";
private static final String DB_NAME = "DataManagerSystem"; // 数据库名
private static final String USER = "group";
private static final String PASSWORD = "123456";
/*** 以上请根据实际情况修改 ****/
private static final String DB_URL = String.format("jdbc:mysql://%s:%s/%s", IP, PORT, DB_NAME);
// 单例模式写法之一

View File

@@ -20,14 +20,14 @@ public interface CaptchaUtils {
/**
* 私有构造函数,防止实例化
*/
private CaptchaUtils();
//private CaptchaUtils();
/**
* 生成随机验证码
*
* @return 生成的验证码字符串
*/
static String generateCaptcha();
//static String generateCaptcha();
/**
* 验证用户输入的验证码是否正确
@@ -36,6 +36,6 @@ public interface CaptchaUtils {
* @param systemCaptcha 系统生成的验证码
* @return 验证结果正确返回true错误返回false
*/
static boolean verifyCaptcha(String inputCaptcha,String systemCaptcha);
//static boolean verifyCaptcha(String inputCaptcha,String systemCaptcha);
}

View File

@@ -1,24 +0,0 @@
package backend.utils.interfaces;
import java.sql.*;
/**
* 数据库工具接口,提供数据库连接和资源关闭的通用方法
*/
public interface DBUtil {
/**
* 获取数据库连接对象
*
* @return Connection 数据库连接对象用于执行SQL语句
*/
static Connection getConnection();
/**
* 关闭数据库相关资源,包括连接、语句和结果集
*
* @param conn 数据库连接对象,需要被关闭的连接
* @param stmt SQL语句对象需要被关闭的语句
* @param rs 结果集对象,需要被关闭的结果集
*/
static void close(Connection conn, Statement stmt, ResultSet rs);
}

View File

@@ -10,7 +10,7 @@ public interface PasswordUtil {
* @param plainText 需要加密的明文密码字符串
* @return 加密后的密码字符串
*/
static String encrypt(String plainText);
//static String encrypt(String plainText);
/**
* 验证明文密码与已加密密码是否匹配
@@ -19,6 +19,6 @@ public interface PasswordUtil {
* @param hashed 已加密的密码字符串
* @return 如果匹配返回true否则返回false
*/
static boolean verify(String plainText, String hashed);
//static boolean verify(String plainText, String hashed);
}

View File

@@ -9,13 +9,13 @@ public interface RoleUtil {
* @param role 待判断的角色字符串
* @return 如果是管理员角色返回true否则返回false
*/
static boolean isAdmin(String role);
//static boolean isAdmin(String role);
/**
* 判断给定的角色是否为普通用户角色
* @param role 待判断的角色字符串
* @return 如果是普通用户角色返回true否则返回false
*/
static boolean isUser(String role);
//static boolean isUser(String role);
}