# fluent-mongo
**Repository Path**: xiezengcheng/fluent-mongo
## Basic Information
- **Project Name**: fluent-mongo
- **Description**: fluent-mongo是MongoTemplate增强工具包,简化查询操作,对条件查询、排序、分页进行了很好的封装。
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/xiezengcheng/fluent-mongo
- **GVP Project**: No
## Statistics
- **Stars**: 8
- **Forks**: 5
- **Created**: 2021-10-11
- **Last Updated**: 2024-08-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: MongoDB, SpringBoot, Java
## README
# Fluent-Mongo
基于 Java8 的 @FunctionInterface 特性,简化 MongoTemplate 操作,支持查询、修改、删除、更新。
## 特征
#### 1、很轻量
> Fluent-Mongo 整个框架只依赖 spring-boot-starter-data-mongodb,再无其他任何第三方依赖。
#### 2、只增强
> Fluent-Mongo 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MongoTemplate 原有的任何功能。
#### 3、可读性
> Fluent-Mongo 采用Java8的@FunctionInterface特性,实现属性传递,避免大量字符串和魔法值的出现,大大提高可读性。
#### 4、更灵活
> Fluent-Mongo 支持分页查询、简单查询、批量更新、批量插入、排序、分页...等等等等。
## 快速安装
1.在pom.xml中引入依赖
```xml
com.gitee.xiezengcheng
fluent-mongo
1.1.2
```
2.定义配置类,将 `FluentMongoTemplate` 注入 Spring 容器
```java
@Configuration
public class FluentMongoConfig {
@Bean
public FluentMongoTemplate fluentMongoTemplate(MongoTemplate mongoTemplate) {
return new FluentMongoTemplate(mongoTemplate);
}
}
```
## 快速上手
### 定义实体类
```java
@Data
@Document(collection = "tb_algorithm")
public class Algorithm {
private String id;
private String algorithmType;
}
```
### 查询
列表查询:
```java
List algorithmList = fluentMongoTemplate.findListByQuery(CriteriaWrapper.andWrapper(),SortBuilder.builder().build(),Algorithm.class);
```
单个查询:
```java
CriteriaAndWrapper criteriaAndWrapper = CriteriaWrapper.andWrapper().is(Algorithm::getId, 1);
SortBuilder builder = SortBuilder.builder();
Optional algorithmOptional = fluentMongoTemplate.findOneByQuery(criteriaAndWrapper, builder, Algorithm.class);
```
条件查询:
```java
CriteriaAndWrapper criteriaAndWrapper = CriteriaWrapper.andWrapper().is(Algorithm::getAlgorithmType, "平均值");
// 排序
SortBuilder sortBuilder = SortBuilder.builder().add(Algorithm::getId, Sort.Direction.DESC);
List algorithmList = fluentMongoTemplate.findListByQuery(criteriaAndWrapper, sortBuilder, Algorithm.class);
```
分页查询:
```java
CriteriaAndWrapper criteriaAndWrapper = CriteriaWrapper.andWrapper().is(Algorithm::getAlgorithmType, "平均值");
FluentPageRequest fluentPageRequest = FluentPageRequest.of(1, 10, SortBuilder.builder());
FluentPageResponse page = fluentMongoTemplate.findPage(Algorithm.class, criteriaAndWrapper, fluentPageRequest);
```
### 更新
批量更新:
```java
CriteriaAndWrapper criteriaAndWrapper = CriteriaWrapper.andWrapper().is(Algorithm::getAlgorithmType, "平均值");
UpdateBuilder updateBuilder = UpdateBuilder.builder().set(Algorithm::getAlgorithmType, "绝对值");
fluentMongoTemplate.updateMulti(criteriaAndWrapper,updateBuilder , Algorithm.class);
```