All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.anwen.mongo.service.IService Maven / Gradle / Ivy

There is a newer version: 2.1.5
Show newest version
package com.anwen.mongo.service;

import com.anwen.mongo.aggregate.Aggregate;
import com.anwen.mongo.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.mapping.TypeReference;
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);

    /**
     * 添加或修改
     * @param entity 对象
     * @param isQueryDatabase 是否查询数据库判断添加或修改
     * @return {@link boolean}
     * @author anwen
     * @date 2024/8/6 下午7:37
     */
    boolean saveOrUpdate(T entity, boolean isQueryDatabase);

    /**
     * 根据传入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);

    /**
     * 批量添加或修改
     * @param entityList 对象集合
     * @param isQueryDatabase 是否查询数据库判断添加或修改
     * @return {@link boolean}
     * @author anwen
     * @date 2024/8/6 下午7:41
     */
    boolean saveOrUpdateBatch(Collection entityList,boolean isQueryDatabase);

    /**
     * 根据传入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);

    /**
     * 根据id修改多个
     * @param entityList 修改的对象,需要包含id
     * @return {@link java.lang.Boolean}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
    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);

    /**
     * 通过列进行修改
     * @param entity 修改的实体
     * @param column 根据什么列修改
     * @return {@link java.lang.Boolean}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
    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 idList);

    /**
     * 查询所有
     * @return java.util.List
     * @author JiaChaoYang
     * @since 2023/2/10 9:48
    */
    List list();

    /**
     * 查询所有,返回指定类型
     * @param rClazz 返回类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/27 上午9:52
     */
     List list(Class rClazz);

    /**
     * 查询所有,返回指定类型
     * @param typeReference 返回类型
     * @author anwen
     * @date 2024/5/28 下午9:03
     */
     List list(TypeReference typeReference);

    /**
     * 管道查询
     * @param aggregate 管道
     * @return {@link List}
     * @author anwen
     * @date 2024/6/23 下午5:03
     */
    List list(Aggregate aggregate);

    /**
     * 管道查询
     * @param aggregate 管道
     * @param rClass 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:04
     */
     List list(Aggregate aggregate, Class rClass);

    /**
     * 管道查询
     * @param aggregate 管道
     * @param typeReference 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:04
     */
     List list(Aggregate aggregate, TypeReference typeReference);

    /**
     * 查询单个
     * @param queryChainWrapper 条件
     * @return {@link T}
     * @author anwen
     * @date 2024/6/23 下午5:12
     */
    T one(QueryChainWrapper queryChainWrapper);

    /**
     * 查询单个
     * @param queryChainWrapper 条件
     * @param rClazz 返回值类型
     * @return {@link R}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
     R one(QueryChainWrapper queryChainWrapper,Class rClazz);

    /**
     * 查询单个
     * @param queryChainWrapper 条件
     * @param typeReference 返回值类型
     * @return {@link R}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
     R one(QueryChainWrapper queryChainWrapper,TypeReference typeReference);

    /**
     * 查询列表
     * @param queryChainWrapper 条件
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
    List list(QueryChainWrapper queryChainWrapper);

    /**
     * 查询列表
     * @param queryChainWrapper 条件
     * @param rClazz 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
     List list(QueryChainWrapper queryChainWrapper,Class rClazz);

    /**
     * 查询列表
     * @param queryChainWrapper 条件
     * @param typeReference 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:13
     */
     List list(QueryChainWrapper queryChainWrapper,TypeReference typeReference);

    /**
     * 获取总数
     * @return {@link long}
     * @author anwen
     * @date 2024/6/23 下午5:06
     */
    long count();

    /**
     * 获取总数
     * @param queryChainWrapper 条件
     * @return {@link long}
     * @author anwen
     * @date 2024/6/23 下午5:06
     */
    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 rClazz 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:07
     */
     PageResult page(PageParam pageParam,Class rClazz);

    /**
     * 分页查询
     * @param pageParam 分页参数对象
     * @param typeReference 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:07
     */
     PageResult page(PageParam pageParam,TypeReference typeReference);

    /**
     * 分页查询
     * @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 pageParam 分页参数对象
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param rClazz 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:07
     */
     PageResult page(PageParam pageParam, Integer recentPageNum,Class rClazz);

    /**
     * 分页查询
     * @param pageParam 分页参数对象
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param typeReference 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:07
     */
     PageResult page(PageParam pageParam, Integer recentPageNum,TypeReference typeReference);

    /**
     * 分页查询
     * @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 rClazz 返回值类型
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     PageResult page(Integer pageNum,Integer pageSize,Class rClazz);

    /**
     * 分页查询
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param typeReference 返回值类型
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     PageResult page(Integer pageNum,Integer pageSize,TypeReference typeReference);

    /**
     * 分页查询
     * @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);

    /**
     * 分页查询
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param queryChainWrapper 条件
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
    PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
    PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
    PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Integer recentPageNum);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
    PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam, Integer recentPageNum);

    /**
     * 分页查询
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param rClazz 返回值类型
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     PageResult page(Integer pageNum,Integer pageSize, Integer recentPageNum,Class rClazz);

    /**
     * 分页查询
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param typeReference 返回值类型
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     PageResult page(Integer pageNum,Integer pageSize, Integer recentPageNum,TypeReference typeReference);

    /**
     * 分页查询
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param queryChainWrapper 条件
     * @param rClazz 返回值类型
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize,Class rClazz);

    /**
     * 分页查询
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param queryChainWrapper 条件
     * @param typeReference 返回值类型
     * @return com.anwen.mongo.sql.model.PageResult
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize,TypeReference typeReference);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param rClazz 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
     PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam,Class rClazz);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param typeReference 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
     PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam,TypeReference typeReference);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param rClazz 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
     PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Integer recentPageNum,Class rClazz);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param typeReference 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
     PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Integer recentPageNum,TypeReference typeReference);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param rClazz 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
     PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam, Integer recentPageNum,Class rClazz);

    /**
     * 分页查询
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param recentPageNum 查询最近n页的数据  {参数=null 表示仅查询当前页数据}  {参数取值[5-50] 表示查询最近[5-50]页的数据 建议recentPageNum等于10 参考 百度分页检索}
     * @param typeReference 返回值类型
     * @return {@link com.anwen.mongo.model.PageResult}
     * @author anwen
     * @date 2024/6/23 下午5:08
     */
     PageResult page(QueryChainWrapper queryChainWrapper, PageParam pageParam, Integer recentPageNum,TypeReference typeReference);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param pageParam 分页参数对象
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:10
     */
    List pageList(PageParam pageParam);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param pageParam 分页参数对象
     * @param rClazz 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:10
     */
     List pageList(PageParam pageParam,Class rClazz);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param pageParam 分页参数对象
     * @param typeReference 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:10
     */
     List pageList(PageParam pageParam, TypeReference typeReference);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:10
     */
    List pageList(Integer pageNum,Integer pageSize);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param rClazz 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:10
     */
     List pageList(Integer pageNum,Integer pageSize,Class rClazz);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param typeReference 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:10
     */
     List pageList(Integer pageNum,Integer pageSize,TypeReference typeReference);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param queryChainWrapper 条件
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:11
     */
    List pageList(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param queryChainWrapper 条件
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param rClazz 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:11
     */
     List pageList(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize,Class rClazz);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param queryChainWrapper 条件
     * @param pageNum 当前页
     * @param pageSize 每页显示行数
     * @param typeReference 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:11
     */
     List pageList(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize,TypeReference typeReference);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:11
     */
    List pageList(QueryChainWrapper queryChainWrapper, PageParam pageParam);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param rClazz 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:11
     */
     List pageList(QueryChainWrapper queryChainWrapper, PageParam pageParam,Class rClazz);

    /**
     * 返回List的page,无需进行count查询,速度会比较快
     * @param queryChainWrapper 条件
     * @param pageParam 分页参数对象
     * @param typeReference 返回值类型
     * @return {@link java.util.List}
     * @author anwen
     * @date 2024/6/23 下午5:11
     */
     List pageList(QueryChainWrapper queryChainWrapper, PageParam pageParam,TypeReference typeReference);

    /**
     * 根据id查询单个
     * @param id id
     * @return T
     * @author JiaChaoYang
     * @date 2023/6/25/025
    */
    T getById(Serializable id);

    /**
     * 根据id查询单个
     * @param id id
     * @return T
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     R getById(Serializable id,Class rClazz);

    /**
     * 根据id查询单个
     * @param id id
     * @return T
     * @author JiaChaoYang
     * @date 2023/6/25/025
     */
     R getById(Serializable id,TypeReference typeReference);

    /**
     * 根据多个id查询
     * @param ids id集合
     * @return {@link List}
     * @author anwen
     * @date 2024/5/2 上午12:43
     */
    List getByIds(Collection ids);

    /**
     * 根据多个id查询
     * @param ids id集合
     * @return {@link List}
     * @author anwen
     * @date 2024/5/2 上午12:43
     */
     List getByIds(Collection ids,Class rClazz);

    /**
     * 根据多个id查询
     * @param ids id集合
     * @return {@link List}
     * @author anwen
     * @date 2024/5/2 上午12:43
     */
     List getByIds(Collection ids,TypeReference typeReference);

    /**
     * 命令查询接口,传入值为json,如{eq:XXX}
     * @param command 命令json
     * @return java.util.List
     * @author JiaChaoYang
     * @date 2023/12/30 23:28
    */
    List queryCommand(String command);

    /**
     * 命令查询接口,传入值为json,如{eq:XXX}
     * @param command 命令json
     * @return java.util.List
     * @author JiaChaoYang
     * @date 2023/12/30 23:28
     */
     List queryCommand(String command,Class rClazz);

    /**
     * 命令查询接口,传入值为json,如{eq:XXX}
     * @param command 命令json
     * @return java.util.List
     * @author JiaChaoYang
     * @date 2023/12/30 23:28
     */
     List queryCommand(String command,TypeReference typeReference);

    /**
     * 根据某一列查询
     * @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 List
     * @author JiaChaoYang
     * @date 2023/10/19 23:28
     */
     List getByColumn(SFunction field,Object fieldValue,Class rClazz);

    /**
     * 根据某一列查询
     * @param field 字段
     * @param fieldValue 字段值
     * @return List
     * @author JiaChaoYang
     * @date 2023/10/19 23:28
     */
     List getByColumn(SFunction field,Object fieldValue,TypeReference typeReference);

    /**
     * 根据某一列查询
     * @param field 字段
     * @param fieldValue 字段值
     * @return T
     * @author JiaChaoYang
     * @date 2023/10/19 23:30
    */
    List getByColumn(String field,Object fieldValue);

    /**
     * 根据某一列查询
     * @param field 字段
     * @param fieldValue 字段值
     * @return T
     * @author JiaChaoYang
     * @date 2023/10/19 23:30
     */
     List getByColumn(String field,Object fieldValue,Class rClazz);

    /**
     * 根据某一列查询
     * @param field 字段
     * @param fieldValue 字段值
     * @return T
     * @author JiaChaoYang
     * @date 2023/10/19 23:30
     */
     List getByColumn(String field,Object fieldValue,TypeReference typeReference);

    /**
     * 是否存在
     * @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);

    /**
     * 获取当前service所对应的泛型类
     * @return {@link Class}
     * @author JiaChaoYang
     * @date 2024/1/19 16:22
    */
    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);

    /**
     * 获取条件构造器
     * @author anwen
     * @date 2024/6/25 下午9:05
     */
    LambdaQueryChainWrapper lambdaQuery();

    /**
     * 获取管道构造器
     * @return {@link com.anwen.mongo.aggregate.LambdaAggregateChainWrapper}
     * @author anwen
     * @date 2024/6/20 下午11:34
     */
    LambdaAggregateChainWrapper lambdaAggregate();

    /**
     * 获取管道构造器
     * @author anwen
     * @date 2024/6/20 下午11:34
     */
    LambdaAggregateChainWrapper lambdaAggregates();

    /**
     * 获取修改条件构造器
     * @author anwen
     * @date 2024/6/25 下午9:05
     */
    LambdaUpdateChainWrapper lambdaUpdate();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy