Mongodb---java篇

一、导入依赖

XML 复制代码
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

二、编写配置文件连接Mongodb

我的认证数据库是admin,你们可能不一样

XML 复制代码
spring:
  data:
    mongodb:
      host: 192.168.110.223
      port: 27017
      username: root
      #password: 123456
      # 将纯数字密码加字符串
      password: smart
      database: articledb
      authentication-database: admin

三、编写实体

java 复制代码
@Data
//复合索引
@CompoundIndex( def = "{'userid': 1, 'nickname': -1}")
@Document("comment")
public class Comment implements Serializable {
    @Id
    private String id;

    //吐槽内容
    private String content;


    //发布日期
    private Date publishtime;

    @Indexed
    private String userid;
    //昵称
    private String nickname;
    //评论的日期时间
    private LocalDateTime createdatetime;
    //点赞数
    private Integer likenum;
    //回复数
    private Integer replynum;
    //状态
    private String state;
    //上级ID
    private String parentid;
    private String articleid;

四、操作数据

可以是spring的模板方法进行crud操作,也可以自己设置Repository层进行操作,方法名和JPA有点相似。Repository默认的方法比价少,需要自己的写方法,用模板方法就要多一些

java 复制代码
@Repository
public interface CommentRepository  extends MongoRepository<Comment,String> {

    Page<Comment> findByParentid(String parentid, PageRequest of);
    
}
java 复制代码
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 {

    @Autowired
    private CommentRepository commentRepository;


    //注入MongoTemplate
    @Autowired
    private 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() {
//调用dao
        return commentRepository.findAll();
    }

    /**
     * 根据id查询评论
     *
     * @param id
     * @return
     */
    public Comment findCommentById(String id) {
//调用dao
        return 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");
    }
}

测试我这里就不演示了,都比较简单。

相关推荐
不会编程的懒洋洋2 分钟前
Spring Cloud Eureka 服务注册与发现
java·笔记·后端·学习·spring·spring cloud·eureka
FIN技术铺6 分钟前
问:数据库的六种锁机制实践总结?
数据库·sql·oracle
赖龙7 分钟前
java程序打包及执行 jar命令及运行jar文件
java·pycharm·jar
U12Euphoria9 分钟前
java的runnable jar采用exe和.bat两种方式解决jre环境的问题
java·pycharm·jar
java小吕布29 分钟前
Java Lambda表达式详解:函数式编程的简洁之道
java·开发语言
程序员劝退师_36 分钟前
优惠券秒杀的背后原理
java·数据库
Gauss松鼠会38 分钟前
GaussDB全密态数据库等值查询
数据库·oracle·gaussdb
JSUITDLWXL40 分钟前
在Oracle数据中更新整个对象和更新对象的某几个字段时,他们的锁是相同的吗
数据库·oracle
杏花春雨江南41 分钟前
ddl/dml/dcl
数据库·oracle
java小吕布1 小时前
Java集合框架之Collection集合遍历
java