继承MongoRepository也太香了吧

mongonDB作为非关系型数据库

是非关系数据库当中功能最丰富,最像关系数据库的。因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,而且还支持对数据建立索引,分页查询、多条件查询和排序功能这都不是问题。

不光香,还能造!能够减轻数据库的压力,提高系统性能.

首先直接上依赖

org.springframework.boot

spring-boot-starter-data-mongodb

2.1.6.RELEASE

springBoot的yml配置

option是设置超时时间,跟,不喜欢这么多的 可以删掉,假如报错再贴上去吧哈哈

spring:

data:

mongodb:

uri: mongodb://账号:[email protected]:27017

database: 集合名称(库名)

option:

min-connection-per-host: 20

max-connection-per-host: 200

threads-allowed-to-block-for-connection-multiplier: 5

server-selection-timeout: 30000

max-wait-time: 120000

max-connection-idle-time: 0

max-connection-life-time: 0

connect-timeout: 20000

socket-timeout: 0

socket-keep-alive: false

ssl-enabled: false

ssl-invalid-host-name-allowed: false

always-use-m-beans: false

heartbeat-socket-timeout: 20000

heartbeat-connect-timeout: 20000

min-heartbeat-frequency: 500

heartbeat-frequency: 10000

local-threshold: 15

是前辈留给我们的好产物,一定要放心使用。

创建接口继承我们的MongoRepository

public interface AutomationBWHWebRepository extends MongoRepository {

}

实体类 @Doucment(collection="")是映射到的表名 上边的是Lombok

@Data

@ToString

@Document(collection = "mongoDB表明")

public class AutomationBWHWeb {

//mongoDb上的主键

@Id

private String Id;

路铺好了 直接上内容代码了

package org.springframework.data.repository.query;

import java.util.Optional;

import org.springframework.data.domain.Example;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.domain.Sort;

public interface QueryByExampleExecutor{

OptionalfindOne(Examplevar1);

IterablefindAll(Examplevar1);

IterablefindAll(Examplevar1, Sort var2);

PagefindAll(Examplevar1, Pageable var2);

long count(Examplevar1);

boolean exists(Examplevar1);

}

贴出MongoRepository的findAll()查询源码,随机选用一条 那就是它把

PagefindAll(Examplevar1, Pageable var2)

Example是自行封装的查询条件 下边有介绍 ,而这个Pageable 我们再看看源码,需要的是什么参数。 贴得不是很全,建议大家在编译器中去好好看看。

算了 我挺难的,全部贴出来可能会脑瓜子嗡嗡的。

PageRequest是继承了AbstractPageRequest又实现了 Pageable所以!我们可以用这个对象

//静态构造方法 分页加时间排序的功能,Sort也就是我们根据字段排序的一个条件

public static PageRequest of(int page, int size, Sort sort) {

return new PageRequest(page, size, sort);

}

最后最后!!正题!

//参数参数条件

public QueryResult findHospitalH5(MapqueryPageRequest) {

int page = Integer.parseInt(queryPageRequest.get("currentPage"));

int size = Integer.parseInt(queryPageRequest.get("pageSize"));

String hospitalName = queryPageRequest.get("hospitalName");

String remark = queryPageRequest.get("remark");

//创建查询条件对象

ExampleMatcher exampleMatcher = ExampleMatcher.matching().

//remark表示查询字段名称

withMatcher("remark", ExampleMatcher.GenericPropertyMatchers.contains()).

withMatcher("hospitalName",

//ExampleMatcher.GenericPropertyMatchers.contains()表示包含的意思还需要更多需求的,文章下方有其余方法,包括结尾是,全匹配等

ExampleMatcher.GenericPropertyMatchers.contains());

//创建实体类

AutomationBWHH5 information = new AutomationBWHH5();

//将所需要条件查询的值set到实体类中

if (!StringUtils.isEmpty(hospitalName)) {

information.setHospitalName(hospitalName);

}

if (!StringUtils.isEmpty(remark)) {

information.setRemark(remark);

}

//缝合条件

Exampleexample = Example.of(information, exampleMatcher);

//设置分页,这里page页码是不允许为0的

if (page <= 0) {

page = 1;

}

if (size == 0) {

size = 10;

}

//???假如觉得麻烦,按照自己需求来 哈哈哈

page = page - 1;

//Sort.Direction.DESC 这里是按照集合表里边的sortDate字段进行正向排序,我的是在实体类中设置的字段为Date

Sort sort = new Sort(Sort.Direction.DESC,"sortDate");

//分页查询

Pageable pageable = new PageRequest(page, size,sort);

PagerequestPage = automationBWHH5Repository.findAll(example, pageable);

QueryResult queryResult = new QueryResult();

queryResult.setTotal(requestPage.getTotalElements());

queryResult.setList(requestPage.getContent());

return queryResult;

}

ExampleMatcher.GenericPropertyMatchers.->

根据需要自行匹配。不恰当的地方,大佬批评指正!

觉得很香的小伙伴一定要告诉妈妈!

mongorepository查询条件_MongoRepository的多条件查询和排序功能相关推荐

  1. jpa mysql sql分页查询语句_JPA多条件复杂SQL动态分页查询功能

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  2. mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...

    一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节 ...

  3. Django框架(11.Django中的通过模型类查询数据以及相关函数和条件)

     Django中的查询函数 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询.    不管哪个函数注意返回值的类型 函数名 功能 返回值 说明 get 返回表中满足条件的 ...

  4. JPA多条件复杂SQL动态分页查询

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  5. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...

    mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...

  6. Laravel最佳实践--根据搜索参数为Model查询应用不同的Where条件

    我们平时使用Laravel的Model查询当查询应用了多个条件的时候一般都是链式调用,像下面这样: User::where('age', '=', 18)->where('sex', '=', ...

  7. ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)

    标题:Oracle中的rownum不能使用大于>的问题 转自网络,稍做修改: 一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的"&g ...

  8. php多条件检索怎么写,sql查询同时满足三个条件 php查询数据库,同时满足三个条件的sql怎么写?...

    php查询数据库,同时满足三个条件的sql怎么写? 这样写没有问题的,是不是你传参数错了,输出语句看看$sql="SELECT*FROM表名字WHERE字段1=aand字段2=b" ...

  9. 数据库:数据查询(指定的列、全部列、经过计算的值、消除重复的行、查询满足条件的元组、比较查询、范围查询、集合查询、字符匹配查询)

    数据查询是数据库的核心操作,SQL提供了 select 语句实现查询功能 1.查询指定的列 格式: select 查询列表,查询列表 from 查询的表名 2.查询全部列(查询的顺序不同) (1) s ...

最新文章

  1. rapidxml修改节点的值
  2. crontab、chkconfig、systemd、unit、targ
  3. 由于问题引起信号ORA-27154无法启动数据库
  4. Castle Active Record for .NET2.0快速入门示例
  5. sqlplus中批量执行sql脚本(Oracle)
  6. java编程 内存_Java编程技术之浅析JVM内存
  7. [Bootstrap]7天深入Bootstrap(1)入门准备
  8. Hibernate的CRUD
  9. MC33063电源啸叫
  10. 基于jsp+java+ssm的大学生缴费系统-计算机毕业设计
  11. 进入mariadb_MariaDB基本命令
  12. Spring的事件处理
  13. 开源项目ruoyi-springboot-vue源码分析之LogAspect日志打印
  14. 回归初心才是智能家居APP掘金市场的制胜关键
  15. 缓存加速------Redis主从复制,哨兵模式,集群
  16. ant design vue:upload打开选择文件弹框前弹出确认框
  17. 大sd卡 裂开了,写保护掉了。重新装好后,被写保护的解决办:
  18. 搜狗输入法 android 历史版本,搜狗输入法老版本下载
  19. nag在逆向中是什么意思_OD调试4----去除nag窗口的几种方法
  20. 云计算的概念、原理和关键技术

热门文章

  1. 2021级新生程序设计班级天梯赛:3-2 小Z爱读书
  2. 二十二 、I/O流1
  3. 遭遇美国TRO,原告律所撤诉后多久可以解冻?
  4. Xcode8.2 真机测试 ,添加iOS10.3的idk到Xcode8.2中
  5. Packet Tracer - 配置初始路由器设置
  6. 计算机工作原理及进程和线程的区别
  7. 肠道核心菌属-粪球菌属(Coprococcus)
  8. 我给自己做了一个导航网站
  9. 高维空间中的高斯分布和随机投影
  10. 问题记录--Win11中文家庭版利用VMware安装虚拟机linux系统Ubuntu