BaseGenericService API
概述
BaseGenericService 封装并扩充了 Chloe ORM 的数据访问方法, 供服务层使用。
按使用场景分类如下表所示:
操作分类 | 具体方法 |
---|---|
(批量)新增 | Add |
(批量)删除 | Delete |
(批量)更新 | Update |
特殊查询 | Count, Exists, SqlQuery |
查询单行实体 | Get, Select |
查询单行Vo | SelectVo |
查询单行单值 | SelectValue |
查询多行实体 | GetList, SelectList |
查询多行Vo | SelectVoList |
查询多行单值 | 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值字段
- 返回:更新行数