5.8 MongoTemplate实现评论点赞
我们看一下以下点赞的临时示例代码: CommentService 新增updateThumbup方法
/** * 点赞-效率低 * @param id */ public void updateCommentThumbupToIncrementingOld(String id){ Comment comment = CommentRepository.findById(id).get(); comment.setLikenum(comment.getLikenum()+1); CommentRepository.save(comment); }
以上方法虽然实现起来比较简单,但是执行效率并不高,因为我只需要将点赞数加1就可以了,没必要查询出所有字段修改后再更新所有字段。我们可以使用MongoTemplate类来实现对某列的操作。
(1)修改CommentService
//注入MongoTemplate private MongoTemplate mongoTemplate; /** * 点赞数+1 * @param id */ public void updateCommentLikenum(String id){ //查询对象 Query query=Query.query(Criteria.where("_id").is(id)); //更新对象 Update update=new Update(); //局部更新,相当于$set // update.set(key,value) //递增$inc // update.inc("likenum",1); update.inc("likenum"); //参数1:查询对象 //参数2:更新对象 //参数3:集合的名字或实体类的类型Comment.class mongoTemplate.updateFirst(query,update,"comment"); }
(2)测试用例:
cn.itcast.article.service.CommentServiceTest
/** * 点赞数+1 */ public void testUpdateCommentLikenum(){ //对3号文档的点赞数+1 commentService.updateCommentLikenum("3"); }
执行测试用例后,发现点赞数+1了: