mongorepository查询条件_MongoRepository的多条件查询和排序功能
继承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的多条件查询和排序功能相关推荐
- jpa mysql sql分页查询语句_JPA多条件复杂SQL动态分页查询功能
概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...
- mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...
一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节 ...
- Django框架(11.Django中的通过模型类查询数据以及相关函数和条件)
Django中的查询函数 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询. 不管哪个函数注意返回值的类型 函数名 功能 返回值 说明 get 返回表中满足条件的 ...
- JPA多条件复杂SQL动态分页查询
概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...
- 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...
mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...
- Laravel最佳实践--根据搜索参数为Model查询应用不同的Where条件
我们平时使用Laravel的Model查询当查询应用了多个条件的时候一般都是链式调用,像下面这样: User::where('age', '=', 18)->where('sex', '=', ...
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
标题:Oracle中的rownum不能使用大于>的问题 转自网络,稍做修改: 一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的"&g ...
- php多条件检索怎么写,sql查询同时满足三个条件 php查询数据库,同时满足三个条件的sql怎么写?...
php查询数据库,同时满足三个条件的sql怎么写? 这样写没有问题的,是不是你传参数错了,输出语句看看$sql="SELECT*FROM表名字WHERE字段1=aand字段2=b" ...
- 数据库:数据查询(指定的列、全部列、经过计算的值、消除重复的行、查询满足条件的元组、比较查询、范围查询、集合查询、字符匹配查询)
数据查询是数据库的核心操作,SQL提供了 select 语句实现查询功能 1.查询指定的列 格式: select 查询列表,查询列表 from 查询的表名 2.查询全部列(查询的顺序不同) (1) s ...
最新文章
- rapidxml修改节点的值
- crontab、chkconfig、systemd、unit、targ
- 由于问题引起信号ORA-27154无法启动数据库
- Castle Active Record for .NET2.0快速入门示例
- sqlplus中批量执行sql脚本(Oracle)
- java编程 内存_Java编程技术之浅析JVM内存
- [Bootstrap]7天深入Bootstrap(1)入门准备
- Hibernate的CRUD
- MC33063电源啸叫
- 基于jsp+java+ssm的大学生缴费系统-计算机毕业设计
- 进入mariadb_MariaDB基本命令
- Spring的事件处理
- 开源项目ruoyi-springboot-vue源码分析之LogAspect日志打印
- 回归初心才是智能家居APP掘金市场的制胜关键
- 缓存加速------Redis主从复制,哨兵模式,集群
- ant design vue:upload打开选择文件弹框前弹出确认框
- 大sd卡 裂开了,写保护掉了。重新装好后,被写保护的解决办:
- 搜狗输入法 android 历史版本,搜狗输入法老版本下载
- nag在逆向中是什么意思_OD调试4----去除nag窗口的几种方法
- 云计算的概念、原理和关键技术