
com.anwen.mongo.service.IService Maven / Gradle / Ivy
package com.anwen.mongo.service;
import com.anwen.mongo.conditions.aggregate.AggregateChainWrapper;
import com.anwen.mongo.conditions.aggregate.LambdaAggregateChainWrapper;
import com.anwen.mongo.conditions.query.LambdaQueryChainWrapper;
import com.anwen.mongo.conditions.query.QueryChainWrapper;
import com.anwen.mongo.conditions.update.LambdaUpdateChainWrapper;
import com.anwen.mongo.conditions.update.UpdateChainWrapper;
import com.anwen.mongo.model.PageParam;
import com.anwen.mongo.model.PageResult;
import com.anwen.mongo.support.SFunction;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.CreateIndexOptions;
import com.mongodb.client.model.DropIndexOptions;
import com.mongodb.client.model.IndexModel;
import com.mongodb.client.model.IndexOptions;
import org.bson.Document;
import org.bson.conversions.Bson;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
/**
* @author JiaChaoYang
* @since 2023-02-09 13:25
**/
public interface IService {
/**
* 添加
* @param entity 添加的对象
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:27
*/
Boolean save(T entity);
/**
* 添加多个
* @param entityList 对象集合
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:56
*/
Boolean saveBatch(Collection entityList);
/**
* 添加或修改
* @param entity 对象
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:57
*/
Boolean saveOrUpdate(T entity);
/**
* 根据传入wrapper条件判断添加修改,传递_id并不会修改
* @param entity 对象
* @param queryChainWrapper 条件
* @return java.lang.Boolean
* @author JiaChaoYang
* @date 2024/1/15 23:15
*/
Boolean saveOrUpdateWrapper(T entity,QueryChainWrapper queryChainWrapper);
/**
* 批量添加或修改
* @param entityList 对象集合
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:57
*/
Boolean saveOrUpdateBatch(Collection entityList);
/**
* 根据传入wrapper条件判断批量添加修改,传递_id并不会修改
* @param entityList 对象集合
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:57
*/
Boolean saveOrUpdateBatchWrapper(Collection entityList,QueryChainWrapper queryChainWrapper);
/**
* 修改
* @param entity 修改的对象,需要包含id
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:28
*/
Boolean updateById(T entity);
Boolean updateBatchByIds(Collection entityList);
/**
* 通过列进行修改
* @param entity 修改的实体
* @param column 根据什么列修改
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:46
*/
Boolean updateByColumn(T entity, SFunction column);
Boolean updateByColumn(T entity, String column);
/**
* 根据条件删除
* @param updateChainWrapper 条件
* @return java.lang.Boolean
* @author JiaChaoYang
* @date 2023/10/20 0:51
*/
Boolean remove(UpdateChainWrapper updateChainWrapper);
/**
* 根据条件修改
* @param updateChainWrapper 条件
* @return java.lang.Boolean
* @author JiaChaoYang
* @date 2023/10/20 0:51
*/
Boolean update(UpdateChainWrapper updateChainWrapper);
/**
* 根据条件修改
* @author JiaChaoYang
* @date 2024/2/3 13:10
*/
Boolean update(T entity,QueryChainWrapper queryChainWrapper);
/**
* 根据id删除
* @param id 数据id
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:47
*/
Boolean removeById(Serializable id);
/**
* 根据字段删除
* @param column 字段名
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 14:01
*/
Boolean removeByColumn(SFunction column, Object value);
/**
* 根据字段删除
* @param column 字段
* @param value 值
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 14:05
*/
Boolean removeByColumn(String column,Object value);
/**
* 根据id批量删除
* @param idList id集合
* @return java.lang.Boolean
* @author JiaChaoYang
* @since 2023/2/9 13:59
*/
Boolean removeBatchByIds(Collection extends Serializable> idList);
/**
* 查询所有
* @return java.util.List
* @author JiaChaoYang
* @since 2023/2/10 9:48
*/
List list();
List aggregateList(AggregateChainWrapper queryChainWrapper);
T one(QueryChainWrapper queryChainWrapper);
/**
* 获取单个,返回T类型的对象
* 注:如果查询到大于一条数据,会取第一条返回
* @return Map< String, Object>
* @author JiaChaoYang
* @date 2023/7/20 23:20
*/
@Deprecated
T limitOne(QueryChainWrapper queryChainWrapper);
List list(QueryChainWrapper queryChainWrapper);
List list(AggregateChainWrapper queryChainWrapper);
long count();
long count(QueryChainWrapper queryChainWrapper);
/**
* 分页查询
* @param pageParam 分页参数对象
* @return com.anwen.mongo.sql.model.PageResult
* @author JiaChaoYang
* @date 2023/6/25/025
*/
PageResult page(PageParam pageParam);
/**
* 分页查询
* @param pageParam 分页参数对象
* @param recentPageNum 查询最近n页的数据 {参数=null 表示仅查询当前页数据} {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
* @return com.anwen.mongo.sql.model.PageResult
* @author JiaChaoYang
* @date 2023/6/25/025
*/
PageResult page(PageParam pageParam, Integer recentPageNum);
/**
* 分页查询
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @return com.anwen.mongo.sql.model.PageResult
* @author JiaChaoYang
* @date 2023/6/25/025
*/
PageResult page(Integer pageNum,Integer pageSize);
/**
* 分页查询
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param recentPageNum 查询最近n页的数据 {参数=null 表示仅查询当前页数据} {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
* @return com.anwen.mongo.sql.model.PageResult
* @author JiaChaoYang
* @date 2023/6/25/025
*/
PageResult page(Integer pageNum,Integer pageSize, Integer recentPageNum);
PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize);
PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam);
PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Integer recentPageNum);
PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam, Integer recentPageNum);
/**
* 返回List的page,无需进行count查询,速度会比较快
* @author JiaChaoYang
* @date 2024/3/16 23:56
*/
List pageList(PageParam pageParam);
/**
* 返回List的page,无需进行count查询,速度会比较快
*
* @author JiaChaoYang
* @date 2024/3/16 23:56
*/
List pageList(Integer pageNum,Integer pageSize);
/**
* 返回List的page,无需进行count查询,速度会比较快
*
* @author JiaChaoYang
* @date 2024/3/16 23:56
*/
List pageList(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize);
/**
* 返回List的page,无需进行count查询,速度会比较快
*
* @author JiaChaoYang
* @date 2024/3/16 23:56
*/
List pageList(QueryChainWrapper queryChainWrapper, PageParam pageParam);
/**
* 根据id查询单个
* @param id id
* @return T
* @author JiaChaoYang
* @date 2023/6/25/025
*/
T getById(Serializable id);
List getByIds(Collection extends Serializable> ids);
/**
* 命令查询接口,传入值为json,如{eq:XXX}
* @param command 命令json
* @return java.util.List
* @author JiaChaoYang
* @date 2023/12/30 23:28
*/
List queryCommand(String command);
/**
* 根据某一列查询
* @param field 字段
* @param fieldValue 字段值
* @return List
* @author JiaChaoYang
* @date 2023/10/19 23:28
*/
List getByColumn(SFunction field,Object fieldValue);
/**
* 根据某一列查询
* @param field 字段
* @param fieldValue 字段值
* @return T
* @author JiaChaoYang
* @date 2023/10/19 23:30
*/
List getByColumn(String field,Object fieldValue);
/**
* 是否存在
* @param id id
* @return java.lang.Boolean
* @author JiaChaoYang
* @date 2024/2/3 13:42
*/
Boolean exist(Serializable id);
/**
* 是否存在
* @param queryChainWrapper wrapper条件
* @return java.lang.Boolean
* @author JiaChaoYang
* @date 2024/2/3 13:41
*/
Boolean exist(QueryChainWrapper queryChainWrapper);
/**
* 创建索引
* @param bson 描述索引键的对象,该对象不能为 null
* @return java.lang.String
* @author JiaChaoYang
* @date 2023/11/15 14:04
*/
String createIndex(Bson bson);
/**
* 使用给定的键和选项创建索引。
* @param bson 描述索引键的对象,该对象不能为 null
* @param indexOptions 指数的选项
* @return java.lang.String
* @author JiaChaoYang
* @date 2023/11/15 15:37
*/
String createIndex(Bson bson, IndexOptions indexOptions);
/**
* 创建多个索引
* @param indexes 索引列表
* @return java.util.List
* @author JiaChaoYang
* @date 2023/11/15 15:34
*/
List createIndexes(List indexes);
/**
* 创建多个索引
* @param indexes 索引列表
* @param createIndexOptions 创建索引时要使用的选项
* @return java.util.List 索引名称列表
* @author JiaChaoYang
* @date 2023/11/15 15:34
*/
List createIndexes(List indexes, CreateIndexOptions createIndexOptions);
/**
* 获取此集合中的所有索引。
*
* @return 列表索引可迭代接口
*/
List listIndexes();
/**
* 删除给定其名称的索引。
*
* @param indexName 要删除的索引的名称
*/
void dropIndex(String indexName);
/**
* 删除给定其名称的索引。
*
* @param indexName 要删除的索引的名称
* @param dropIndexOptions 删除索引时要使用的选项
*/
void dropIndex(String indexName, DropIndexOptions dropIndexOptions);
/**
* 在给定用于创建索引的键的情况下删除索引。
*
* @param keys 要删除的索引的键
*/
void dropIndex(Bson keys);
/**
* 在给定用于创建索引的键的情况下删除索引。
*
* @param keys 要删除的索引的键
* @param dropIndexOptions 删除索引时要使用的选项
* @since 3.6
*/
void dropIndex(Bson keys, DropIndexOptions dropIndexOptions);
/**
* 删除此集合上的所有索引,但 _id 上的默认值除外。
*
*/
void dropIndexes();
/**
* 删除此集合上的所有索引,但 _id 上的默认值除外。
*
* @param dropIndexOptions 删除索引时要使用的选项
* @since 3.6
*/
void dropIndexes(DropIndexOptions dropIndexOptions);
Class getGenericityClass();
/**
* 获取当前service所对应的MongoCollection
* @author JiaChaoYang
* @date 2024/1/19 16:22
*/
MongoCollection getCollection();
/**
* 获取当前service所对应的MongoCollection
* @author JiaChaoYang
* @date 2024/1/19 16:22
*/
MongoCollection getCollection(String database);
LambdaQueryChainWrapper lambdaQuery();
LambdaAggregateChainWrapper lambdaAggregate();
LambdaUpdateChainWrapper lambdaUpdate();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy