一、導入依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>
二、編寫配置文件連接Mongodb
我的認證數據庫是admin,你們可能不一樣
spring:data:mongodb:host: 192.168.110.223port: 27017username: root#password: 123456# 將純數字密碼加字符串password: smartdatabase: articledbauthentication-database: admin
三、編寫實體
@Data
//復合索引
@CompoundIndex( def = "{'userid': 1, 'nickname': -1}")
@Document("comment")
public class Comment implements Serializable {@Idprivate String id;//吐槽內容private String content;//發布日期private Date publishtime;@Indexedprivate String userid;//昵稱private String nickname;//評論的日期時間private LocalDateTime createdatetime;//點贊數private Integer likenum;//回復數private Integer replynum;//狀態private String state;//上級IDprivate String parentid;private String articleid;
四、操作數據
? ? ? ? 可以是spring的模板方法進行crud操作,也可以自己設置Repository層進行操作,方法名和JPA有點相似。Repository默認的方法比價少,需要自己的寫方法,用模板方法就要多一些
@Repository
public interface CommentRepository extends MongoRepository<Comment,String> {Page<Comment> findByParentid(String parentid, PageRequest of);}
package net.royal.student.service;import net.royal.student.dao.CommentRepository;
import net.royal.student.entity.Comment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;import java.util.List;/*** @author Royal*/
@Service
public class CommentService {@Autowiredprivate CommentRepository commentRepository;//注入MongoTemplate@Autowiredprivate MongoTemplate mongoTemplate;/*** 保存一個評論*/public void saveComment(Comment comment) {commentRepository.save(comment);}/*更新一個評論*/public void updateComment(Comment comment) {commentRepository.save(comment);}/*** 根據id刪除評論*/public void deleteCommentById(String id) {commentRepository.deleteById(id);}/*** 查詢所有評論** @return*/public List<Comment> findCommentList() {
//調用daoreturn commentRepository.findAll();}/*** 根據id查詢評論** @param id* @return*/public Comment findCommentById(String id) {
//調用daoreturn commentRepository.findById(id).get();}/*** 根據父id查詢分頁列表* @param parentid* @param page* @param size* @return*/public Page<Comment> findCommentListPageParentId(String parentid, int page ,int size){return commentRepository.findByParentid(parentid, PageRequest.of(page-1,size));}/*** 點贊-效率低*/public void updateCommentThumbupToIncrementingOld(String id) {Comment comment = commentRepository.findById(id).get();comment.setLikenum(comment.getLikenum()+1);commentRepository.save(comment);}/*** 點贊數+1*/public void updateCommentLikenum(String id){//查詢對象Query query = Query.query(Criteria.where("_id").is(id));//更新對象Update update = new Update();update.inc("likenum");mongoTemplate.updateFirst(query, update, "comment");}
}
測試我這里就不演示了,都比較簡單。