构建专业代码应用
EntityService 通用方法
count
/**
* 统计符合给定过滤条件的行数。
*
* @param filters 过滤条件
* @return 符合条件的总行数
*/
Long count(Filters filters);
createOne
/**
* 创建一个新的实体并返回其 ID。
*
* @param entity 要创建的实体
* @return 新创建实体的 ID
*/
K createOne(T entity);
createOneAndFetch
/**
* 创建一个新的实体,并返回带有自动生成字段值的实体对象。
*
* @param entity 要创建的实体
* @return 新创建的实体对象
*/
T createOneAndFetch(T entity);
createList
/**
* 批量创建多个实体,并返回这些实体的 ID 列表。
*
* @param entities 要创建的实体列表
* @return 创建后的实体 ID 列表
*/
List<K> createList(List<T> entities);
createListAndFetch
/**
* 批量创建多个实体,并返回包含自动生成字段值的实体对象列表。
*
* @param entities 要创建的实体列表
* @return 新创建的实体对象列表
*/
List<T> createListAndFetch(List<T> entities);
getById (单个ID)
/**
* 根据 ID 获取实体。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param id 要获取的实体 ID
* @return 如果找到则返回包含实体的 Optional,否则返回空
*/
Optional<T> getById(K id);
getById (含子查询 SubQueries)
/**
* 根据 ID 获取实体,可使用 subQueries 展开关联字段。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param id 要获取的实体 ID
* @param subQueries 用于展开关联字段的对象
* @return 如果找到则返回包含实体的 Optional,否则返回空
*/
Optional<T> getById(K id, SubQueries subQueries);
getById (指定字段)
/**
* 根据 ID 获取实体,并可指定要读取的字段。
* 如果未指定字段,则默认读取所有可访问字段。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param id 要获取的实体 ID
* @param fields 要读取的字段列表
* @return 如果找到则返回包含实体的 Optional,否则返回空
*/
Optional<T> getById(K id, Collection<String> fields);
getByIds (ID列表)
/**
* 根据 ID 列表获取多个实体。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param ids 要获取的实体 ID 列表
* @return 实体列表
*/
List<T> getByIds(List<K> ids);
getByIds (含子查询 SubQueries)
/**
* 根据 ID 列表获取多个实体,并可使用 subQueries 展开关联字段。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param ids 实体 ID 列表
* @param subQueries 用于展开关联字段的对象
* @return 实体列表
*/
List<T> getByIds(List<K> ids, SubQueries subQueries);
getByIds (指定字段)
/**
* 根据 ID 列表获取多个实体,并可指定要读取的字段。
* 如果未指定字段,则默认读取所有可访问字段。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param ids 实体 ID 列表
* @param fields 要读取的字段列表
* @return 实体列表
*/
List<T> getByIds(List<K> ids, Collection<String> fields);
getDistinctFieldValue
/**
* 获取指定字段的唯一值列表,并根据给定条件进行过滤。
*
* @param <V> 字段值的类型
* @param fieldReference 要获取值的字段引用
* @param filters 可选的过滤条件
* @return 唯一字段值的列表
*/
<V extends Serializable, R> List<V> getDistinctFieldValue(SFunction<T, R> fieldReference, Filters filters);
getFieldValue
/**
* 根据实体 ID 和字段方法引用,获取指定字段的值。
* ManyToOne/OneToOne/Option/MultiOption 字段保留原始值。
*
* @param id 实体 ID
* @param method 字段访问方法(Lambda 表达式或方法引用)
* @param <V> 字段值类型
* @param <R> 字段访问方法的返回类型
* @return 字段的值
*/
<V extends Serializable, R> V getFieldValue(K id, SFunction<T, R> method);
getIds
/**
* 根据过滤条件获取符合条件的实体 ID 列表。
*
* @param filters 要应用的过滤条件
* @return 匹配的实体 ID 列表
*/
List<K> getIds(Filters filters);
getRelatedIds (字段方法引用)
/**
* 根据过滤条件,获取 ManyToOne/OneToOne 关联字段的去重 ID 列表。
*
* @param <EK> 关联实体 ID 类型
* @param <R> 字段访问方法的返回类型
* @param filters 过滤条件
* @param method 字段访问方法(Lambda 表达式或方法引用)
* @return 去重的关联实体 ID 列表
*/
<EK extends Serializable, R> List<EK> getRelatedIds(Filters filters, SFunction<T, R> method);
getRelatedIds (字段名)
/**
* 根据过滤条件和字段名,获取 ManyToOne/OneToOne 关联字段的去重 ID 列表。
*
* @param <EK> 关联实体 ID 类型
* @param filters 过滤条件
* @param fieldName 关联字段名称
* @return 去重的关联实体 ID 列表
*/
<EK extends Serializable> List<EK> getRelatedIds(Filters filters, String fieldName);
updateOne (忽略 null)
/**
* 根据实体 ID 更新已有实体,忽略空值(null)。
*
* @param entity 包含更新数据的实体
* @return 若更新成功返回 true,否则抛出异常
*/
boolean updateOne(T entity);
updateOne (可选忽略 null)
/**
* 根据实体 ID 更新已有实体,可选择是否忽略空值(null)。
*
* @param entity 包含更新数据的实体
* @param ignoreNull 若为 true,则忽略空值;否则空值将覆盖原值
* @return 若更新成功返回 true,否则抛出异常
*/
boolean updateOne(T entity, boolean ignoreNull);
updateOneAndFetch (忽略 null)
/**
* 根据实体 ID 更新已有实体,忽略空值(null)。
* 返回更新后的实体,包含最新字段值。
*
* @param entity 包含更新数据的实体
* @return 更新后的实体(包含最新字段值)
*/
T updateOneAndFetch(T entity);
updateOneAndFetch (可选忽略 null)
/**
* 根据实体 ID 更新已有实体,可选择是否忽略空值(null)。
* 返回更新后的实体,包含最新字段值。
*
* @param entity 包含更新数据的实体
* @param ignoreNull 若为 true,则忽略空值;否则空值将覆盖原值
* @return 更新后的实体(包含最新字段值)
*/
T updateOneAndFetch(T entity, boolean ignoreNull);
updateList (忽略 null)
/**
* 批量更新多个实体(根据 ID),忽略空值(null)。
*
* @param entities 要更新的实体列表
* @return 若更新成功返回 true,否则抛出异常
*/
boolean updateList(List<T> entities);
updateList (可选忽略 null)
/**
* 批量更新多个实体(根据 ID),可选择是否忽略空值(null)。
*
* @param entities 要更新的实体列表
* @param ignoreNull 若为 true,则忽略空值;否则空值将覆盖原值
* @return 若更新成功返回 true,否则抛出异常
*/
boolean updateList(List<T> entities, boolean ignoreNull);
updateListAndFetch (忽略 null)
/**
* 批量更新多个实体(根据 ID),忽略空值(null)。
* 返回更新后的实体列表,包含最新字段值。
*
* @param entities 要更新的实体列表
* @return 更新后的实体列表(包含最新字段值)
*/
List<T> updateListAndFetch(List<T> entities);
updateListAndFetch (可选忽略 null)
/**
* 批量更新多个实体(根据 ID),可选择是否忽略空值(null)。
* 返回更新后的实体列表,包含最新字段值。
*
* @param entities 要更新的实体列表
* @param ignoreNull 若为 true,则忽略空值;否则空值将覆盖原值
* @return 更新后的实体列表(包含最新字段值)
*/
List<T> updateListAndFetch(List<T> entities, boolean ignoreNull);
updateByFilter
/**
* 对符合指定过滤条件的行进行批量更新,
* 更新值由字段-值映射提供。
* <p>如果未指定过滤条件,则可能会更新当前用户可见的所有数据。</p>
*
* @param filters 可选的过滤条件
* @param value 要更新的字段-值映射
* @return 受影响的行数
*/
Integer updateByFilter(Filters filters, Map<String, Object> value);
deleteById
/**
* 根据实体 ID 删除对应的实体。
*
* @param id 要删除的实体 ID
* @return 若删除成功返回 true,否则抛出异常
*/
boolean deleteById(K id);
deleteByIds
/**
* 批量删除多个实体(根据 ID 列表)。
*
* @param ids 要删除的实体 ID 列表
* @return 若删除成功返回 true,否则抛出异常
*/
boolean deleteByIds(List<K> ids);
deleteByFilters
/**
* 根据指定过滤条件删除实体。
*
* @param filters 用于匹配实体的过滤条件
* @return 若删除成功返回 true,否则抛出异常
*/
boolean deleteByFilters(Filters filters);
searchOne (Filters)
/**
* 根据过滤条件查询单个实体。
* 若匹配到多个实体,则抛出异常。
*
* @param filters 用于查询的过滤条件
* @return 匹配的单个实体
*/
T searchOne(Filters filters);
searchOne (FlexQuery)
/**
* 使用指定的 FlexQuery 查询单个实体,可设置需要读取的字段等。
* 若匹配到多个实体,则抛出异常。
*
* @param flexQuery 包含字段、过滤条件、排序等信息的 FlexQuery 对象
* @return 匹配的单个实体
*/
T searchOne(FlexQuery flexQuery);
searchList (无参)
/**
* 无分页查询所有实体(仅限代码调用)。
* 如果结果数量超过 MAX_BATCH_SIZE,会记录错误日志,但不抛出异常。
*
* @return 所有实体的列表
*/
List<T> searchList();
searchList (Filters)
/**
* 根据过滤条件无分页查询实体(仅限代码调用)。
* 如果结果数量超过 MAX_BATCH_SIZE,会记录错误日志,但不抛出异常。
*
* @param filters 用于查询的过滤条件
* @return 匹配的实体列表
*/
List<T> searchList(Filters filters);
searchList (FlexQuery)
/**
* 根据指定的 FlexQuery 无分页查询实体(仅限代码调用)。
* 如果结果数量超过 MAX_BATCH_SIZE,会记录错误日志,但不抛出异常。
*
* @param flexQuery 包含字段、过滤条件、排序等信息的 FlexQuery 对象
* @return 匹配的实体列表
*/
List<T> searchList(FlexQuery flexQuery);
searchList (FlexQuery, DTO)
/**
* 执行无分页的 FlexQuery,并将结果映射为指定的 DTO 类型。
* 如果结果数量超过 MAX_BATCH_SIZE,会记录错误日志,但不抛出异常。
*
* @param <R> DTO 类型
* @param flexQuery 包含字段、过滤条件、排序等信息的 FlexQuery 对象
* @param dtoClass 要映射成的 DTO 类型
* @return 指定类型的 DTO 列表
*/
<R> List<R> searchList(FlexQuery flexQuery, Class<R> dtoClass);
searchPage (FlexQuery)
/**
* 基于 FlexQuery 执行分页查询。
* 分页大小不能超过 MAX_BATCH_SIZE。
*
* @param flexQuery 包含字段、过滤条件、排序等信息的 FlexQuery 对象
* @param page 包含分页信息的 Page 对象
* @return 包含查询结果的 Page 对象
*/
Page<T> searchPage(FlexQuery flexQuery, Page<T> page);
searchPage (FlexQuery, DTO)
/**
* 基于 FlexQuery 执行分页查询,并将结果映射为指定的 DTO 类型。
* 分页大小不能超过 MAX_BATCH_SIZE。
*
* @param <R> DTO 类型
* @param flexQuery 包含字段、过滤条件、排序等信息的 FlexQuery 对象
* @param page 包含分页信息的 Page 对象
* @param dtoClass 要映射成的 DTO 类型
* @return 包含查询到的 DTO 对象的 Page
*/
<R> Page<R> searchPage(FlexQuery flexQuery, Page<R> page, Class<R> dtoClass);
groupById
/**
* 根据过滤条件查询实体,并以实体 ID 为键进行分组。
* 如果结果数量超过 MAX_BATCH_SIZE,会记录错误日志,但不抛出异常。
*
* @param filters 用于查找实体的过滤条件
* @return 一个 Map,键为实体 ID,值为对应的实体
*/
Map<Serializable, T> groupById(Filters filters);