spring - Spring Boot 中的 Like 按钮实现
问题描述
在我的应用程序中,用户可以发布文章。其他用户可以喜欢这些文章。
文章分类:
@Entity
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "article_id")
private int id;
@Column(name = "article_title")
private String articleTitle;
@OneToMany(mappedBy = "event")
private List<PeopleWhoLiked> peopleWhoLiked;
}
@Entity
public class PeopleWhoLiked {
@EmbeddedId
private PeopleWhoLiked id;
@ManyToOne @MapsId("articleId")
private Article article;
@ManyToOne @MapsId("userId")
private User user;
}
并且有类别实体。每篇文章都有一个类别。
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "category_id")
private int id;
@NotEmpty
@Column(name = "categoryName")
private String categoryName;
@OneToMany(mappedBy = "article")
private List<Article> articleList;
}
我喜欢的表
Article_id User_id
x x
这些都是相关表的外键。
有了
category.getArticleList();
功能,我可以向用户展示文章。他们可以喜欢文章。但问题是系统不知道文章是否已经被用户喜欢。所以总是喜欢按钮处于活动状态。
查询(Like 表上每篇文章的选择语句)看起来具有巨大的时间复杂性和系统过载。)即使我这样做,我如何才能将其发布到th:each
只有Article
对象的 thymeleaf 语句中。
我认为每次使用一个 select 语句查询 10 篇文章听起来不错。但是我又如何将它传递给带有 Article 对象的 thymeleaf。
解决方案
您的性能问题是由对每一行的额外请求引起的。
对于 1 选择返回 100 行,您需要向数据库添加 100 选择。
如果您需要显示复杂的结果构建视图并将视图结果映射到您的 @Entity 类,该类仅用于演示目的。
推荐阅读
- c# - Unity Dota 风格的载入画面
- android - Firestore 查询不会进入响应
- excel - 我想使用 python 在新的 tkinter 窗口中打印我的所有 excel 数据
- itext - 无法根据从模板 itextsharp 生成的 PDF 中的内容创建下一页
- c++ - 在二进制文件中读取/写入形状(图形)数据
- java - 有没有办法在 Java 单元测试中触发手动触发事件
- sql - 在两个时间戳列之间应用的条件
- java - o android 通知声音未播放
- c# - 同时更新来自 2 个不同形式的具有相同输出的 2 个不同标签
- django - 无法将 django 上下文数据解压缩到呈现热图的模板中