序言
这篇文章是基于Java实现的一个点赞功能,是在微服务上的评论功能的子模块,以及类似于抖音的评论据赞列表,可以联表查询用户点赞的评论列表和用户被点赞的评论列表,其中并没有使用redis和mq的中间件进行优化。
实现功能
实现添加取消点赞,判定是否点赞,查看用户点赞的评论列表和用户被点赞的评论列表等。
一、数据库设计1.评论据赞表数据库
二、实体类和VO对象1.实体类
实体类内容与数据库相同,在此不做展示。
2.VO对象
public class LikeVO {
/**
* 点赞表主键
*/
Integer likeId;
/**
* 用户信息
*/
UserSimpleVO userInfo;
/**
* 评论内容
*/
String content;
/**
* 点赞创建时间
*/
Timestamp createTime;
}
三、代码实现1.判定是否点赞
@Override
public boolean isLike(Integer userId, Integer commentId) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Like::getUserId,userId)
.eq(Like::getCommentId,commentId);
Long count = likeMapper.selectCount(queryWrapper);
return count>0;
}
2.添加或取消点赞
@Override
public boolean like(Integer userId, Integer commentId) {
//lambda查询是否存在点赞记录
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Like::getCommentId,commentId)
.eq(Like::getUserId,userId);
Like like = likeMapper.selectOne(queryWrapper);
//判断点赞记录是否为空,为空则添加,不为空则删除
if(like!=null){
int row = likeMapper.delete(queryWrapper);
commentMapper.updateLikeNum(commentId,-1);
return row>0;
}
like = new Like();
like.setCommentId(commentId);
like.setUserId(userId);
int row = likeMapper.insert(like);
//进行评论点赞数的减少
commentMapper.updateLikeNum(commentId,1);
return row>0;
}