定义了一个类 z_sqlCompanys,它继承了 DapperSql 类。
继承 DapperSql
DapperSql 可能是一个泛型类,用于使用 Dapper 进行数据访问,Companys 指定了要操作的实体类型。
继承该类意味着 z_sqlCompanys 可以使用 DapperSql 类中定义的方法,例如 GetAllAsync、GetByIdAsync 等,用于操作 Companys 实体数据。
类属性
OrderByColumn: 字符串类型的属性,用来存储排序列名。
OrderByDirection: 字符串类型的属性,用来存储排序方向(升序或降序)。
DefaultOrderByColumn: 字符串类型的属性,用来存储默认的排序列名。
DefaultOrderByDirection: 字符串类型的属性,用来存储默认的排序方向。
构造函数
构造函数没有参数。
在构造函数中,它会:
从 SessionService 获取排序列名 (OrderByColumn) 和排序方向 (OrderByDirection)。
如果 OrderByColumn 或 OrderByDirection 为空,则将其设置为默认值 (DefaultOrderByColumn 和 DefaultOrderByDirection)。
GetSQLSelect 方法
该方法重写了基类 DapperSql 可能拥有的 GetSQLSelect 方法。
它返回一个 SQL 查询字符串,用于从 Companys 表中选择数据。
查询语句使用了 LEFT OUTER JOIN 连接了 Companys 表和 vi_CodeCompany 表,并选择了一些列。
总结
该类通过继承 DapperSql 类,获得了操作 Companys 实体数据的能力。同时,它还定义了排序相关的属性和方法,用于构建带有排序功能的 SQL 查询语句。
这个类旨在提供一个通用的数据访问层,使得对 Companys 实体的操作变得更加简单和灵活。它通过继承 BaseClass 并利用 Dapper 的强大功能,实现了对 Companys 表的增删改查操作,并且提供了排序、分页、搜索等高级功能。
类中主要属性和方法
属性:
dpr: 一个 DapperRepository 实例,用于执行 Dapper 操作。
EntityObject: 当前实体的实例,用于反射获取实体属性信息。
EntityName: 实体的名称,用于构建 SQL 语句。
ConnName: 连接字符串名称,用于连接数据库。
OrderByColumn、OrderByDirection、DefaultOrderByColumn、DefaultOrderByDirection:用于控制排序的属性。
方法:
获取 SQL 语句: GetSQLSelect、GetSQLWhere、GetSQLOrderBy 等方法用于构建不同的 SQL 查询语句部分。
获取数据: GetData、GetDataList 等方法用于获取单条或多条数据,支持分页、排序、搜索等功能。
操作数据: Create、Edit、Delete 等方法用于新增、修改、删除数据。
获取下拉列表数据: GetDropDownList 方法用于获取下拉列表所需的选项数据。
与 DapperSql 的关系
继承关系: z_sqlCompanys 继承自 DapperSql,表示 z_sqlCompanys 是 DapperSql 的一个具体实现,用于操作 Companys 实体。
功能扩展: z_sqlCompanys 在 DapperSql 的基础上,添加了一些特定于 Companys 实体的逻辑,例如自定义的 GetSQLSelect 方法。
代码复用: 通过继承,z_sqlCompanys 可以复用 DapperSql 中定义的通用方法,减少了代码重复。
代码工作原理
创建 DapperRepository 实例: dpr 属性用于执行 Dapper 的各种操作,如查询、插入、更新、删除等。
构建 SQL 语句: 通过 GetSQLSelect、GetSQLWhere、GetSQLOrderBy 等方法动态生成 SQL 查询语句,可以灵活地构造各种查询条件。
执行 SQL 语句: 利用 dpr 实例执行生成的 SQL 语句,并将结果映射到 TEntity 类型的实体对象中。
处理结果: 将查询结果返回给调用方,或者进行进一步的处理。
代码优势
通用性: 通过泛型 TEntity,可以适用于不同的实体类型。
灵活性: 可以自定义 SQL 查询语句,实现复杂的查询逻辑。
可扩展性: 可以通过继承和重写方法来扩展功能。
性能: 利用 Dapper 的高性能特性,提高数据访问效率。
潜在改进
错误处理: 可以添加更完善的错误处理机制,例如捕获异常并记录日志。
缓存: 可以引入缓存机制,提高查询性能。
异步操作: 可以将同步方法改为异步方法,提高并发性能。
参数化查询: 始终使用参数化查询,防止 SQL注入攻击。