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

springBoot+mongoDB项目中,使用MongoFactory、MongoTemplate分页条件查询,增删查改

MongoDB:CRUD

    • 添加
    • 删除
    • 修改
    • 条件查询
    • 分页条件查询

只展示实现类代码

添加

@Autowiredprivate MongoTemplate mongoTemplate;@Autowiredprivate MongoFactory mongoFactory;@Overridepublic boolean saveEntity(entityForm form) {try {实体类 en = new 实体类();en.setName(form.getName);// ... 实体类 save = mongoTemplate.save(en);return Objects.nonNull(save.get_id());} catch (Exception e) {log.error(e.getMessage());}}

底下的就给关键代码了,w太懒了。。。

删除

            Query query = new Query(Criteria.where("条件字段名称例如_id").is(id));//id是传进来的条件DeleteResult remove = mongoTemplate.remove(query, 实体类.class);return remove.getDeletedCount() > 0; //返回删除条数

修改


Query query = new Query();// 添加修改表条件为id=id
query.addCriteria(Criteria.where("主键id字段名").is(id));Update update = new Update(); // 设置需要修改的字段update.set("字段名",新值);// 等等... //返回修改结果
UpdateResult updateResult = mongoTemplate.updateFirst(query, update, 实体类.class);
//updateResult.getModifiedCount()可以获得成功修改条数

条件查询

@Overridepublic List<实体类> getHbzbGudongList(条件实体类 search) {// 目前只有一个关键字字段(keywords) 可以添加多个Query query = new Query();if (Objects.nonNull(search.getKeywords())) {Pattern pattern = Pattern.compile("^.*" + search.getKeywords() + ".*$");query.addCriteria( // orOperator == 或者。里面俩条件关系是or,还有andOperator顾名思义等于数据库中的and new Criteria().orOperator( Criteria.where(条件字段名1).is(pattern),Criteria.where(条件字段名2).is(pattern)));}List<实体类> ls= mongoTemplate.find(query, 实体类.class);return ls;}

这玩意百度了好久用什么聚合查询 老是会报错什么的,导包也导不进,只能用底下发方法实现了

分页条件查询

private Integer type;private String keywords;-----------------上面是orderQuery 类的内容,可以自定义import org.springframework.*; //几乎包都在这下面,我懒得一个个复制出来了,别用*/*** 分页条件查询   //页码也可以不传,只要让orderQuery类继承一个基础分页对象就行* @param pageNum 页码* @param pageSize 条数* @param order 查询条件* @return 返回分页列表*/@Overridepublic Page<实体类> getOrderPage(Integer pageNum, Integer pageSize, orderQuery order) {Pageable pageable = PageRequest.of(pageNum - 1, pageSize);MongoTemplate mongoTemplate = mongoFactory.mongoTemplate("数据库名");Query query = new Query();// 判断条件类型if (Objects.nonNull(order.getType()) && Objects.nonNull(order.getKeywords())) {Integer type = order.getType();switch (type) { // 查询类型:{0:订单号,1:商家名称,2:商品名称}case 0 ->query.addCriteria("字段名1").is(order.getKeywords()));case 1 ->query.addCriteria("字段名2").is(order.getKeywords()));case 2 ->query.addCriteria("字段名3").is(order.getKeywords()));}}long total = mongoTemplate.count(query, 实体类.class);List<实体类> orderPageVOS = mongoTemplate.find(query.with(pageable), 实体类.class);return new PageImpl<>(orderPageVOS, pageable, total);}

相关文章:

  • 代码随想三刷二叉树篇3
  • 代码随想录算法训练营第38天|● 理论基础 ● 509. 斐波那契数● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
  • Linux:文件描述符
  • ai写诗词,三款软件助你妙笔生花!
  • Cesium4Unreal - # 009 直接加载显示Shapefile
  • 返回给前端数据的封装
  • 【Spine学习13】之 制作受击动画思路总结(叠加颜色特效发光效果)
  • Go 基础丨字符串 string
  • 【已解决】better-scroll在PC端如何开启鼠标滚动以及如何始终显示滚动条
  • Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱
  • 北方高温来袭!动力煤却不涨反跌的原因分析
  • 分支结构相关
  • JEnv-for-Windows 详细使用
  • 关于ReactV18的页面跳转传参和接收
  • 【干货分享】25地学考研推免夏令营汇总表
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • nodejs:开发并发布一个nodejs包
  • Spark RDD学习: aggregate函数
  • 爱情 北京女病人
  • 从伪并行的 Python 多线程说起
  • 关于springcloud Gateway中的限流
  • 记一次和乔布斯合作最难忘的经历
  • 那些年我们用过的显示性能指标
  • 如何胜任知名企业的商业数据分析师?
  • 事件委托的小应用
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我的面试准备过程--容器(更新中)
  • 用简单代码看卷积组块发展
  • 追踪解析 FutureTask 源码
  • linux 淘宝开源监控工具tsar
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ### RabbitMQ五种工作模式:
  • (Git) gitignore基础使用
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (ZT)出版业改革:该死的死,该生的生
  • (定时器/计数器)中断系统(详解与使用)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (剑指Offer)面试题34:丑数
  • (一)Docker基本介绍
  • (转)linux下的时间函数使用
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ./configure、make、make install 命令
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core 发展历程和版本迭代
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?