# 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 操作,支持查询、修改、删除、更新。

Apache 2 jdk-8 jdk-11

## 特征 #### 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); ```