Skip to content

BaseGenericService API

概述

BaseGenericService 封装并扩充了 Chloe ORM 的数据访问方法, 供服务层使用。

按使用场景分类如下表所示:

操作分类具体方法
(批量)新增Add
(批量)删除Delete
(批量)更新Update
特殊查询Count, Exists, SqlQuery
查询单行实体Get, Select
查询单行VoSelectVo
查询单行单值SelectValue
查询多行实体GetList, SelectList
查询多行VoSelectVoList
查询多行单值SelectValueList
分页查询GetListPage, SelectList *, SelectValueList *, SqlQueryPage

说明:星号标记为部分支持,不返回 PageInfo 对象。

Null 值处理

Chloe 默认会将 null 值原样写入数据库,这在部分场景下可能并不符合需求。 例如,添加 null 值会使数据库列默认值不生效;更新 null 值会引起意料之外的数据覆盖。 BaseGenericService 对部分方法提供了 null 值处理策略。

操作方法支持方式
Add默认忽略 null 值字段
Update传入参数,是否忽略 null 值字段
Update传入参数,是否忽略 null 值字段

Add

  • 说明:添加
  • 参数:
    • content 指定新增字段
  • 返回:主键值或null

Add

  • 说明:添加
  • 参数:
    • entity 数据实体
  • 返回:附带主键的实体

Add

  • 说明:从DTO对象添加单行数据,按属性名匹配。默认忽略null值字段
  • 参数:
    • dto DTO对象
  • 返回:主键值或null

Add

  • 说明:批量新增
  • 参数:
    • entity 数据实体集合
  • 返回:无

Delete

  • 说明:删除
  • 参数:
    • entity 实体
  • 返回:删除行数

Delete

  • 说明:删除
  • 参数:
    • where
  • 返回:删除行数

Count

  • 说明:查询匹配行数
  • 参数:
    • where 条件
  • 返回:数量

Exists

  • 说明:是否存在匹配条件的数据
  • 参数:
    • where 条件
  • 返回:是否

Get

  • 说明:根据条件获取单条数据
  • 参数:
    • where
  • 返回:数据实体

Get<TOrderBy>

  • 说明:根据条件获取单条数据
  • 参数:
    • TOrderBy 排序字段类型
    • expWhere
    • order 排序字段
    • asc
  • 返回:数据实体

Get

  • 说明:根据条件获取单条数据
  • 参数:
    • expWhere
    • orders 排序字段
  • 返回:数据实体

Select<TSelector>

  • 说明:根据条件获取单条数据,指定字段
  • 参数:
    • where 条件
    • selector 字段
  • 返回:数据实体,仅包含指定字段
  • 示例:Select(t => true, t=> new { t.Id, t.Name})

Select<TSelector, TOrderBy>

  • 说明:根据条件获取单条数据,指定字段
  • 参数:
    • where 条件
    • selector 字段
    • order 排序
    • asc 顺序
  • 返回:数据实体,仅包含指定字段
  • 示例:Select(t => true, t=> new { t.Id, t.Name})

Select<TSelector>

  • 说明:根据条件获取单条数据,指定字段
  • 参数:
    • where 条件
    • selector 字段
    • orders 排序
  • 返回:数据实体,仅包含指定字段
  • 示例:Select(t => true, t => new { t.Id, t.Name}, (t => t.Id, true))

SelectVo<TVo>

  • 说明:根据条件获取单条数据,指定字段
  • 参数:
    • where 条件
    • TVo 包含查询字段的Vo类
  • 返回:TVo 对象
  • 示例:SelectVo<FooVo>(t=> true)

SelectVo<TVo, TOrderBy>

  • 说明:根据条件获取单条数据,指定字段
  • 参数:
    • where 条件
    • order 排序
    • asc 顺序
    • TVo 包含查询字段的Vo类
  • 返回:TVo 对象
  • 示例:SelectVo<FooVo>(t=> true)

SelectVo<TVo>

  • 说明:根据条件获取单条数据,指定字段
  • 参数:
    • where 条件
    • orders 排序
    • TVo 包含查询字段的Vo类
  • 返回:TVo 对象
  • 示例:SelectVo<FooVo>(t => true, (t => t.Id, true))

SelectValue<TValue>

  • 说明:根据条件获取单条数据,指定字段。通常用于单列查询。 注意:基本值类型数据务必使用相应的可空类型来查询
  • 参数:
    • TValue 字段和结果类型
    • where
    • selector
  • 返回:TValue
  • 示例: SelectValue<string>(t => true, t => t.Id)
    SelectValue<int?>(t => true, t => t.Status)

SelectValue<TValue, TOrderBy>

  • 说明:根据条件获取单条数据,指定字段。通常用于单列查询。 注意:基本值类型数据务必使用相应的可空类型来查询
  • 参数:
    • TValue 字段和结果类型
    • where
    • selector
    • order 排序
    • asc 顺序
  • 返回:TValue
  • 示例: SelectValue<string>(t => true, t => t.Id) <br/> SelectValue<int?>(t => true, t => t.Status)

SelectValue<TValue>

  • 说明:根据条件获取单条数据,指定字段。通常用于单列查询。 注意:基本值类型数据务必使用相应的可空类型来查询
  • 参数:
    • TValue 字段和结果类型
    • where
    • selector
    • orders 排序
  • 返回:TValue
  • 示例: SelectValue<string>(t => true, t => t.Id, (t => t.Id, true)) <br/> SelectValue<int?>(t => true, t => t.Status, (t => t.Id, true))

SqlQuery

  • 说明:SQL语句查询
  • 参数:
    • sql SQL语句
    • parameter 参数对象
  • 返回:数据实体列表
  • 示例:("select * from Users where Id=@Id", new { Id = 1 });

SqlQuery

  • 说明:SQL语句查询
  • 参数:
    • sql SQL语句
    • parameters 参数数组
  • 返回:数据实体列表
  • 示例:("select * from Users where Id=@Id", new DbParam("@Id",1));

SqlQueryPage<TOut>

  • 说明:根据sql分页查询 不建议使用此方法,使用时务必注意防范Sql注入问题
  • 参数:
    • TOut 指定泛型
    • sql 完整的查询语句
    • parameter 参数:new
  • 返回:PageInfo<TOut>

GetList

  • 说明:根据条件查询多条数据
  • 参数:
    • expWhere 条件
  • 返回:数据实体列表

GetList<TOrderBy>

  • 说明:根据条件查询多条数据,支持排序
  • 参数:
    • expWhere 条件
  • 返回:数据实体列表

GetList

  • 说明:根据条件查询多条数据,支持排序
  • 参数:
    • expWhere 条件
    • orders 排序
  • 返回:数据实体列表

SelectList<TSelector>

  • 说明:根据条件查询多条数据,指定字段
  • 参数:
    • expWhere 条件
  • 返回:数据实体列表,仅包含指定字段
  • 示例:SelectList(t => true, t => new { t.Id, t.Name})

SelectList<TSelector, TOrderBy>

  • 说明:根据条件查询多条数据,指定字段
  • 参数:
    • expWhere 条件
    • selector 字段选择器
    • order 排序
  • 返回:数据实体列表,仅包含指定字段
  • 示例:SelectList(t => true, t => new { t.Id, t.Name}, t => t.Id)

SelectList<TSelector>

  • 说明:根据条件查询多条数据,指定字段
  • 参数:
    • TSelector 查询字段
    • expWhere 条件
    • selector 字段选择器
    • orders 排序
  • 返回:数据实体列表,仅包含指定字段
  • 示例:SelectList(t => true, t => new { t.Id, t.Name}, (t => t.Id, true), (t => t.Name, false))

SelectList<TSelector, TOrderBy>

  • 说明:根据条件查询多条数据,指定字段且分页
  • 参数:
    • expWhere 条件
    • selector 字段选择器
    • order 排序
  • 返回:数据实体列表,仅包含指定字段
  • 示例:SelectList(t => true, t => new { t.Id, t.Name}, t => t.Id)

SelectList<TSelector>

  • 说明:根据条件查询多条数据,指定字段且分页
  • 参数:
    • expWhere 条件
    • selector 字段选择器
    • pageIndex 页码
    • pageSize 每页数量
    • orders 排序
  • 返回:数据实体列表,仅包含指定字段
  • 示例:SelectList(t => true, t => new { t.Id, t.Name }, 1, 10, (t => t.Id, true))

SelectVoList<TVo>

  • 说明:根据条件查询多条数据,由Vo类型指定字段
  • 参数:
    • expWhere 条件
    • TVo 包含查询字段的Vo类
  • 返回:List<TVo>
  • 示例:SelectVoList<FooVo>(t => true)

SelectVoList<TVo, TOrderBy>

  • 说明:根据条件查询多条数据,由Vo类型指定字段
  • 参数:
    • expWhere 条件
    • TVo 包含查询字段的Vo类
  • 返回:List<TVo>
  • 示例:SelectVoList<FooVo>(t => true, t => t.Id)

SelectVoList<TVo>

  • 说明:根据条件查询多条数据,由Vo类型指定字段
  • 参数:
    • expWhere 条件
    • orders 排序
    • TVo 包含查询字段的Vo类
  • 返回:List<TVo>
  • 示例:SelectVoList<FooVo>(t => true, (t => t.Id, true), (t => t.Name, false))

SelectValueList<TValue>

  • 说明:根据条件查询多条数据,指定字段。通常用于单列查询
  • 参数:
    • TValue 选择字段类型及返回类型
    • expWhere 条件
    • selector 查询字段
  • 返回:List<TValue>
  • 示例:SelectValueList<string>(t => true, t => t.Name)

SelectValueList<TValue, TOrderBy>

  • 说明:根据条件查询多条数据,指定字段。通常用于单列查询
  • 参数:
    • TValue 选择字段类型及返回类型
    • TOrderBy 排序
    • expWhere 条件
    • selector 查询字段
    • order
    • asc
  • 返回:List<TValue>
  • 示例:SelectValueList<string>(t => true, t => t.Name)

SelectValueList<TValue>

  • 说明:根据条件查询多条数据,指定字段。通常用于单列查询
  • 参数:
    • TValue 选择字段类型及返回类型
    • expWhere 条件
    • selector 查询字段
    • orders
  • 返回:List<TValue>
  • 示例:SelectValueList<string>(t => true, t => t.Name, (t => t.Id, true))

SelectValueList<TValue, TOrderBy>

  • 说明:根据条件分页查询多条数据,指定字段。通常用于单列查询
  • 参数:
    • TValue 选择字段类型及返回类型
    • TOrderBy 排序
    • expWhere 条件
    • selector 查询字段
    • order
    • asc
    • pageIndex 页码
    • pageSize 每页条数
  • 返回:List<TValue>
  • 示例 SelectValueList<string>(t => true, t => t.Name)

SelectValueList<TValue>

  • 说明:根据条件分页查询多条数据,指定字段。通常用于单列查询
  • 参数:
    • TValue 选择字段类型及返回类型
    • expWhere 条件
    • selector 查询字段
    • pageIndex 页码
    • pageSize 每页条数
    • orders
  • 返回:List<TValue>
  • 示例:SelectValueList<string>(t => true, t => t.Name, 1, 10, (t => t.Id, true))

GetListPage<TOrderBy>

  • 说明:单表分页查询
  • 参数:
    • TOrderBy 排序字段类型
    • expWhere 查询条件
    • order 排序字段
    • asc 是否正序
    • pageInfo 分页信息
  • 返回:PageInfo<T>

GetListPage

  • 说明:单表分页查询
  • 参数:
    • expWhere 查询条件
    • pageInfo 分页信息
    • orders 排序字段
  • 返回:PageInfo<T>

GetListPage<TOrderBy>

  • 说明:单表分页查询
  • 参数:
    • TOrderBy 排序字段类型
    • expWhere 查询条件
    • order 排序字段
    • asc 是否正序
    • pageIndex 页码
    • pageSize 分页大小
  • 返回:PageInfo<T>

GetListPage

  • 说明:单表分页查询
  • 参数:
    • expWhere 查询条件
    • pageIndex 页码
    • pageSize 分页大小
    • orders 排序字段
  • 返回:PageInfo<T>

GetListPage

  • 说明:单表分页查询。适用于前端传入排序信息。
  • 参数:
    • expWhere 查询条件
    • orderBy 排序字段,不区分大小写。例如 "age asc, name desc"
    • pageIndex 页码
    • pageSize 分页大小
  • 返回:PageInfo<T>

GetListPage<TOut, TOrderBy>

  • 说明:单表分页查询
  • 参数:
    • TOut 结果数据实体类型
    • TOrderBy 排序字段类型
    • expWhere 查询条件
    • order 排序字段
    • asc 是否正序
    • pageInfo 分页信息,为空不分页
  • 返回:PageInfo<TOut>

GetListPage<TOut>

  • 说明:单表分页查询
  • 参数:
    • TOut 结果数据实体类型
    • expWhere 查询条件
    • pageInfo 分页信息
    • orders 排序字段
  • 返回:PageInfo<TOut>

GetListPage<TOut, TOrderBy>

  • 说明:单表分页查询
  • 参数:
    • TOut 结果数据实体类型
    • TOrderBy 排序字段类型
    • expWhere 查询条件
    • order 排序字段
    • asc 是否正序
    • pageIndex 页码
    • pageSize 分页大小
  • 返回:PageInfo<TOut>

GetListPage<TOut>

  • 说明:单表分页查询
  • 参数:
    • TOut 结果数据实体类型
    • expWhere 查询条件
    • pageIndex 页码
    • pageSize 分页大小
    • orders 排序字段
  • 返回:PageInfo<TOut>

GetListPage<TOut>

  • 说明:单表分页查询。适用于前端传入排序信息。
  • 参数:
    • TOut 结果数据实体类型
    • expWhere 查询条件
    • orderBy 排序字段,不区分大小写。例如 "age asc, name desc"
    • pageIndex 页码
    • pageSize 分页大小
  • 返回:PageInfo<TOut>

Update

  • 说明:按条件更新指定字段
  • 参数:
    • where 条件
    • properties 字段
  • 返回:更新行数

Update

  • 说明:按条件从DTO对象更新数据,按属性名匹配
  • 参数:
    • where 条件
    • dto 实体
    • ignoreNullProperty 是否忽略null值字段
  • 返回:更新行数

Update

  • 说明:批量更新实体字段
  • 参数:
    • where 更新条件
    • entities 实体列表
    • ignoreNullProperty 是否忽略null值字段
  • 返回:更新行数

UpdateAndCommit

  • 说明:批量更新实体字段,并提交事务
  • 参数:
    • where 更新条件
    • entities 实体列表
    • ignoreNullProperty 是否忽略null值字段
  • 返回:更新行数