Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.anwen.mongo.mapper.BaseMapper Maven / Gradle / Ivy
package com.anwen.mongo.mapper;
import com.anwen.mongo.aggregate.Aggregate;
import com.anwen.mongo.conditions.interfaces.condition.CompareCondition;
import com.anwen.mongo.conditions.query.QueryChainWrapper;
import com.anwen.mongo.conditions.query.QueryWrapper;
import com.anwen.mongo.conditions.update.UpdateChainWrapper;
import com.anwen.mongo.mapping.TypeReference;
import com.anwen.mongo.model.PageResult;
import com.mongodb.client.model.*;
import org.bson.Document;
import org.bson.conversions.Bson;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
/**
* mapper层
* TODO 名称待定,方法留CRUD,不同数据库实现该接口
* @author JiaChaoYang
**/
public interface BaseMapper extends Mapper {
/**
* 添加单个
* @author anwen
* @date 2024/5/4 下午1:20
*/
boolean save(T entity);
/**
* 添加多个
* @author anwen
* @date 2024/5/4 下午1:20
*/
Boolean saveBatch(Collection entityList);
/**
* 批量操作
* @param writeModelList writeModelList
* @param clazz class
* @return {@link Integer}
* @author anwen
* @date 2024/5/4 下午1:22
*/
Integer bulkWrite(List> writeModelList,Class> clazz);
/**
* 根据queryWrapper修改entity
* @author anwen
* @date 2024/5/4 下午1:23
*/
Boolean update(T entity,QueryChainWrapper queryChainWrapper);
/**
* 是否存在
* @param id id
* @param clazz class
* @return {@link boolean}
* @author anwen
* @date 2024/5/4 下午1:31
*/
boolean isExist(Serializable id,Class> clazz);
/**
* 根据条件查询是否存在
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link boolean}
* @author anwen
* @date 2024/5/4 下午1:31
*/
boolean isExist(QueryChainWrapper,?> queryChainWrapper,Class> clazz);
/**
* 修改,直接根据UpdateWrapper
* @author anwen
* @date 2024/5/4 下午1:32
*/
Boolean update(UpdateChainWrapper, ?> updateChainWrapper, Class> clazz);
/**
* 删除,直接根据UpdateWrapper
* @param updateChainWrapper 条件
* @param clazz class
* @return {@link Boolean}
* @author anwen
* @date 2024/5/4 下午1:32
*/
Boolean remove(UpdateChainWrapper, ?> updateChainWrapper, Class> clazz);
/**
* 根据条件删除
* @param filter 条件
* @param clazz class
* @return {@link Long}
* @author anwen
* @date 2024/5/4 下午1:32
*/
Long remove(Bson filter,Class> clazz);
/**
* 根据条件查询总数
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link long}
* @author anwen
* @date 2024/5/4 下午1:33
*/
long count(QueryChainWrapper, ?> queryChainWrapper,Class> clazz);
/**
* 返回第N页
* @author anwen
* @date 2024/5/4 下午1:33
*/
long recentPageCount(List compareConditionList,Class> clazz, Integer pageNum, Integer pageSize, Integer recentPageNum);
/**
* 查询所有
* @param clazz 操作的class
* @param rClazz 返回的class
* @return {@link List }
* @author anwen
* @date 2024/5/4 下午1:24
*/
List list(Class clazz,Class rClazz);
/**
* 查询所有
* @param clazz 操作的class
* @return {@link List }
* @author anwen
* @date 2024/5/4 下午1:24
*/
default List list(Class clazz){
return list(clazz, clazz);
}
/**
* 查询所有
* @param clazz 操作的class
* @param typeReference 返回的class
* @return {@link List }
* @author anwen
* @date 2024/5/4 下午1:24
*/
List list(Class clazz, TypeReference typeReference);
/**
* 根据条件查询
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:24
*/
List list(QueryChainWrapper queryChainWrapper, Class clazz, Class rClazz);
/**
* 根据条件查询
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:24
*/
@SuppressWarnings("unchecked")
default List list(QueryChainWrapper queryChainWrapper, Class clazz){
return list(queryChainWrapper, (Class) clazz, clazz);
}
/**
* 根据条件查询
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:24
*/
List list(QueryChainWrapper queryChainWrapper, Class clazz, TypeReference typeReference);
/**
* 管道查询
* @param aggregate 管道构建
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:24
*/
List aggregateList(Aggregate> aggregate, Class clazz, Class rClazz);
/**
* 管道查询
* @param aggregate 管道构建
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:24
*/
default List aggregateList(Aggregate> aggregate, Class clazz){
return aggregateList(aggregate, clazz, clazz);
}
/**
* 管道查询
* @param aggregate 管道构建
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:24
*/
List aggregateList(Aggregate> aggregate, Class clazz, TypeReference typeReference);
/**
* 根据条件查询单个
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link T}
* @author anwen
* @date 2024/5/4 下午1:24
*/
R one(QueryChainWrapper queryChainWrapper,Class clazz,Class rClazz);
/**
* 根据条件查询单个
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link T}
* @author anwen
* @date 2024/5/4 下午1:24
*/
@SuppressWarnings("unchecked")
default R one(QueryChainWrapper queryChainWrapper,Class clazz){
return one(queryChainWrapper,(Class) clazz, clazz);
}
/**
* 根据条件查询单个
* @param queryChainWrapper 条件
* @param clazz class
* @return {@link T}
* @author anwen
* @date 2024/5/4 下午1:24
*/
R one(QueryChainWrapper queryChainWrapper,Class clazz,TypeReference typeReference);
/**
* 分页查询
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link PageResult }
* @author anwen
* @date 2024/5/4 下午1:25
*/
PageResult page(Integer pageNum, Integer pageSize, Class clazz,Class rClazz);
/**
* 分页查询
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link PageResult }
* @author anwen
* @date 2024/5/4 下午1:25
*/
default PageResult page(Integer pageNum, Integer pageSize, Class clazz){
return page(pageNum, pageSize, clazz, clazz);
}
/**
* 分页查询,如果queryWrapper有条件,查询会慢,因为需要重新进行count查询
* @param queryChainWrapper 条件
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link PageResult }
* @author anwen
* @date 2024/5/4 下午1:25
*/
PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Class clazz,Class rClazz);
/**
* 分页查询,如果queryWrapper有条件,查询会慢,因为需要重新进行count查询
* @param queryChainWrapper 条件
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link PageResult }
* @author anwen
* @date 2024/5/4 下午1:25
*/
PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Class clazz,TypeReference typeReference);
/**
* 分页查询,返回List,不进行count查询,比page查询效率高
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:26
*/
default List pageList(Integer pageNum, Integer pageSize, Class clazz,Class rClazz){
return pageList(new QueryWrapper<>(),pageNum, pageSize, clazz, rClazz);
}
/**
* 分页查询,返回List,不进行count查询,比page查询效率高
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:26
*/
default List pageList(Integer pageNum, Integer pageSize, Class clazz){
return pageList(pageNum, pageSize, clazz, clazz);
}
/**
* 分页查询,返回List,不进行count查询,比page查询效率高
* @param queryChainWrapper 条件
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:26
*/
List pageList(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Class clazz,Class rClazz);
/**
* 分页查询,返回List,不进行count查询,比page查询效率高
* @param queryChainWrapper 条件
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param clazz class
* @return {@link List}
* @author anwen
* @date 2024/5/4 下午1:26
*/
List pageList(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Class clazz,TypeReference typeReference);
/**
* 分页查询,查询最近n页的数据
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param recentPageNum 查询最近N页的数据
* @param clazz class
* @return {@link PageResult}
* @author anwen
* @date 2024/5/4 下午1:30
*/
default PageResult page(Integer pageNum, Integer pageSize, Integer recentPageNum, Class clazz,Class rClazz){
return page(new QueryWrapper<>(),pageNum, pageSize, recentPageNum, clazz, rClazz);
}
/**
* 分页查询,查询最近n页的数据
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param recentPageNum 查询最近N页的数据
* @param clazz class
* @return {@link PageResult}
* @author anwen
* @date 2024/5/4 下午1:30
*/
default PageResult page(Integer pageNum, Integer pageSize, Integer recentPageNum, Class clazz){
return page(pageNum, pageSize, recentPageNum, clazz, clazz);
}
/**
* 分页查询,查询最近n页的数据
* @param queryChainWrapper 条件
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param recentPageNum 查询最近N页的数据
* @param clazz class
* @return {@link PageResult}
* @author anwen
* @date 2024/5/4 下午1:30
*/
PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Integer recentPageNum, Class clazz,Class rClazz);
/**
* 分页查询,查询最近n页的数据
* @param queryChainWrapper 条件
* @param pageNum 当前页
* @param pageSize 每页显示行数
* @param recentPageNum 查询最近N页的数据
* @param clazz class
* @return {@link PageResult}
* @author anwen
* @date 2024/5/4 下午1:30
*/
PageResult page(QueryChainWrapper queryChainWrapper, Integer pageNum, Integer pageSize, Integer recentPageNum, Class clazz,TypeReference typeReference);
/**
* 根据多个id查询
* @param ids ids
* @param clazz class
* @return {@link java.util.List}
* @author anwen
* @date 2024/5/4 下午1:31
*/
List getByIds(Collection extends Serializable> ids, Class clazz,Class rClazz);
/**
* 根据多个id查询
* @param ids ids
* @param clazz class
* @return {@link java.util.List}
* @author anwen
* @date 2024/5/4 下午1:31
*/
default List getByIds(Collection extends Serializable> ids, Class clazz){
return getByIds(ids, clazz, clazz);
}
/**
* 根据多个id查询
* @param ids ids
* @param clazz class
* @return {@link java.util.List}
* @author anwen
* @date 2024/5/4 下午1:31
*/
List getByIds(Collection extends Serializable> ids, Class clazz,TypeReference typeReference);
/**
* 根据id查询单个
* @author anwen
* @date 2024/5/4 下午1:31
*/
R getById(Serializable id,Class clazz,Class rClazz);
/**
* 根据id查询单个
* @author anwen
* @date 2024/5/4 下午1:31
*/
default T getById(Serializable id,Class clazz){
return getById(id, clazz, clazz);
}
/**
* 根据id查询单个
* @author anwen
* @date 2024/5/4 下午1:31
*/
R getById(Serializable id,Class clazz,TypeReference typeReference);
/**
* 根据传入命令进行查询
* @param command 命令,请传入mongo命令的find中完整的json
* @param clazz class
* @return {@link java.util.List}
* @author anwen
* @date 2024/5/4 下午1:34
*/
List queryCommand(String command,Class clazz,Class rClazz);
/**
* 根据传入命令进行查询
* @param command 命令,请传入mongo命令的find中完整的json
* @param clazz class
* @return {@link java.util.List}
* @author anwen
* @date 2024/5/4 下午1:34
*/
default List queryCommand(String command,Class clazz){
return queryCommand(command, clazz, clazz);
}
/**
* 根据传入命令进行查询
* @param command 命令,请传入mongo命令的find中完整的json
* @param clazz class
* @return {@link java.util.List}
* @author anwen
* @date 2024/5/4 下午1:34
*/
List queryCommand(String command,Class clazz,TypeReference typeReference);
/**
* 根据某列进行查询
* @author anwen
* @date 2024/5/4 下午1:34
*/
List getByColumn(String column,Object value,Class clazz,Class rClazz);
/**
* 根据某列进行查询
* @author anwen
* @date 2024/5/4 下午1:34
*/
default List getByColumn(String column,Object value,Class clazz){
return getByColumn(column, value, clazz, clazz);
}
/**
* 根据某列进行查询
* @author anwen
* @date 2024/5/4 下午1:34
*/
List getByColumn(String column,Object value,Class clazz,TypeReference typeReference);
/**
* 查询总数,estimatedDocumentCount高效率查询,但是不接收条件
* @author anwen
* @date 2024/5/4 下午1:33
*/
long count(Class> clazz);
String createIndex(Bson bson,Class> clazz);
String createIndex(Bson bson, IndexOptions indexOptions, Class> clazz);
List createIndexes(List indexes,Class> clazz);
List createIndexes(List indexes, CreateIndexOptions createIndexOptions,Class> clazz);
List listIndexes(Class> clazz);
void dropIndex(String indexName,Class> clazz);
void dropIndex(String indexName,DropIndexOptions dropIndexOptions,Class> clazz);
void dropIndex(Bson keys,Class> clazz);
void dropIndex(Bson keys,DropIndexOptions dropIndexOptions,Class> clazz);
void dropIndexes(Class> clazz);
void dropIndexes(DropIndexOptions dropIndexOptions,Class> clazz);
}