Java判断用户重复点赞
概述
在Web应用程序中,点赞是一种常见的社交功能。当一个用户点赞一个帖子或评论时,我们需要判断该用户是否已经点过赞。本文将介绍如何使用Java编写代码来判断用户是否重复点赞,并提供代码示例。
问题分析
当用户点赞后,我们需要将用户的点赞记录保存到数据库或缓存中。为了判断用户是否已经点过赞,我们可以查询数据库或缓存来查找用户的点赞记录。如果找到了用户的点赞记录,则表示用户已经点过赞,否则表示用户尚未点赞。
数据库设计
首先,我们需要设计一个数据库表来保存用户的点赞记录。假设我们的表名为likes
,包含以下字段:
字段名 | 类型 | 说明 |
---|---|---|
id | int | 点赞记录的唯一标识 |
user_id | int | 用户的唯一标识 |
target_id | int | 被点赞对象的唯一标识(例如帖子或评论的ID) |
判断用户是否重复点赞的代码
下面是一个示例的Java代码,用于判断用户是否重复点赞:
import java.sql.*;
public class LikeChecker {
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
private static final String USER = "root";
private static final String PASSWORD = "password";
public static boolean hasLiked(int userId, int targetId) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
boolean result = false;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
String sql = "SELECT * FROM likes WHERE user_id = ? AND target_id = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, userId);
stmt.setInt(2, targetId);
rs = stmt.executeQuery();
result = rs.next();
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
上述代码中,我们使用java.sql
包提供的API来连接数据库,并执行一条带有参数的SQL查询语句。如果查询结果集中存在记录,则表示用户已经点过赞。否则,表示用户尚未点赞。
使用示例
以下是一个示例代码,展示了如何使用上述的LikeChecker
类来判断用户是否重复点赞:
public class Main {
public static void main(String[] args) {
int userId = 1; // 用户ID
int targetId = 1001; // 被点赞对象的ID
boolean hasLiked = LikeChecker.hasLiked(userId, targetId);
if (hasLiked) {
System.out.println("用户已经点过赞");
} else {
System.out.println("用户尚未点赞");
}
}
}
总结
本文介绍了如何使用Java编写代码来判断用户是否重复点赞。我们设计了一个数据库表来保存用户的点赞记录,并使用Java的数据库API来执行查询操作。通过判断查询结果集中是否存在记录,我们可以判断用户是否已经点过赞。以上就是这个问题的解决方案,希望对你有所帮助。
参考资料
- [Java Database Connectivity (JDBC)](
- [MySQL Connector/J](