SuperAPI AI 工具集

dapper-query-builder

编程与开发

查看项目

更新于 10-16 03:51

技能介绍

Dapper Query Builder 是一个面向 .NET 项目、以 Dapper 为核心的读取查询生成技能,常用于干净架构(Clean Architecture)应用的查询侧实现。

用途 该技能用于生成优化的读取查询代码,覆盖按 ID 查询单行、列表与报表查询、复杂连接、分页、动态过滤以及 CTE 等典型读取场景,并强调参数化查询以防止 SQL 注入。

主要能力

  • 提供常用方法速查:QueryAsync<T> 用于多行(列表、报表);QueryFirstOrDefaultAsync<T> 用于单行(按 ID 获取);QueryMultipleAsync 用于多结果集(复杂数据);ExecuteAsync 用于无返回结果(Insert/Update/Delete);ExecuteScalarAsync<T> 用于单值(计数、存在性判断)。
  • 提供基础查询处理器模板:基于 ISqlConnectionFactory 创建连接,使用参数化 SQL 与 DTO 映射返回结果。
  • 提供多映射(一对多)模板:通过 QueryAsync 的多类型映射与 splitOn 处理连接,避免 N+1 查询,并用字典合并父实体与子集合。
  • 提供分页与过滤模板:动态拼接 WHERE 条件,使用 OFFSET/FETCH 分页,先执行 COUNT 再查询数据,返回 PagedList。
  • 提供 CTE 模板:使用 WITH、ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) 与后续筛选、连接,实现更可读的复杂逻辑。
  • 提供 SQL 连接工厂接口与实现模板(ISqlConnectionFactory 及基于 Npgsql 的实现)。
  • 提供列映射约定:数据库 snake_case 列通过 AS 别名映射到 DTO 的 PascalCase 属性。

使用方式 在应用层为具体功能创建查询处理器(例如 src/{name}.application/{Feature}/Get{Entity}ById/Get{Entity}ByIdQueryHandler.cs),注入 ISqlConnectionFactory,使用 using 管理连接,编写参数化 SQL,并以 QueryFirstOrDefaultAsync、QueryAsync、ExecuteScalarAsync 等方法返回 DTO 或 PagedList。代码模板中含 PostgreSQL 特有的 ILIKE 与 OFFSET/FETCH 写法。

适用场景 适用于采用 Dapper 进行读取操作的 .NET 应用,尤其是需要多表连接、分页搜索、动态条件过滤、复杂排名或分组统计,并希望避免 N+1 查询、保持接近 ADO.NET 性能的查询侧实现。

限制与注意事项 资料强调的关键规则包括:始终使用参数化、不要拼接用户输入;使用 using 释放连接;用 AS 将列别名与 DTO 对应;连接使用多映射而非 N+1;复杂逻辑用 CTE;分页用 OFFSET/FETCH;大小写不敏感匹配使用 PostgreSQL 的 ILIKE;只返回 DTO 而非实体。模板中的具体实体名、字段名、目录名以占位符(如 {name}、{Entity})呈现,需按项目替换。除资料所述内容外,关于该技能的安装方式、收费、价格、平台支持与效果等事实暂未提供。