当前位置: 首页 > news >正文

Mongodb---java篇

一、导入依赖

 <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");}
}

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

相关文章:

  • 简述React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化 到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的 ?
  • 特征提取(Feature Extraction)特征评估(五)
  • 【Linux】The server quit without updating PID file的几种解决方案
  • ubuntu20.04设置文件开机自启动
  • 持续总结中!2024年面试必问 20 道分布式、微服务面试题(二)
  • ffmpeg视频编码原理和实战-(2)视频帧的创建和编码packet压缩
  • 6.4分享会
  • 2024全国高考作文题解读(Chat GPT 4.0版本)
  • 讯方618代表有话说 | 行业大咖详解鸿蒙,全程在线答疑
  • java static 如何理解
  • Edge 工作区是什么?它都有哪些作用?
  • 删除目录
  • 【Android Studio】导入import android.support.v7.app.AppcompatActivity;时报错
  • 【机器学习】原理与应用场景 Python代码展现
  • 「前端+鸿蒙」鸿蒙应用开发简介
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【刷算法】求1+2+3+...+n
  • 5、React组件事件详解
  • Brief introduction of how to 'Call, Apply and Bind'
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ES6--对象的扩展
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript函数式编程(一)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • OSS Web直传 (文件图片)
  • Python学习笔记 字符串拼接
  • Redis在Web项目中的应用与实践
  • SQLServer之索引简介
  • 大快搜索数据爬虫技术实例安装教学篇
  • 动态规划入门(以爬楼梯为例)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何合理的规划jvm性能调优
  • 双管齐下,VMware的容器新战略
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一文看透浏览器架构
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​Python 3 新特性:类型注解
  • ​虚拟化系列介绍(十)
  • $().each和$.each的区别
  • (3) cmake编译多个cpp文件
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (阿里云万网)-域名注册购买实名流程
  • (力扣题库)跳跃游戏II(c++)
  • (十八)SpringBoot之发送QQ邮件
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)memcache、redis缓存
  • ***通过什么方式***网吧