Dapper 查询数据的核心是 Query 方法家族,直接执行 SQL 并映射为对象;支持多行(Query)、单行(QueryFirstOrDefault 等)、动态/匿名查询,以及缓冲控制和 IN 参数等进阶技巧。

Dapper 查询数据的核心就是 Query 方法家族,它不搞抽象封装,直接让你写 SQL,再把结果映射成对象。用法简单,但细节决定是否健壮、安全、高效。
基础查询:Query 返回多行
这是最常用的查询方式,适合查列表、分页、批量数据。
- 必须指定泛型类型
T(如User、Product),Dapper 会按属性名自动匹配列名(大小写不敏感) - SQL 中用
@参数名占位,传参用匿名对象或实体对象,天然防 SQL 注入 - 返回
IEnumerable<t></t>,支持延迟执行;调用.ToList()才真正取数
示例:
string sql = "SELECT Id, Name, Email FROM Users WHERE Age > @Age AND Status = @Status";
var users = connection.Query<User>(sql, new { Age = 18, Status = "Active" }).ToList();登录后复制
单行查询:选对方法很关键
不同场景要选不同方法,它们对“无结果”或“多结果”的处理逻辑完全不同:
-
QueryFirstOrDefault<t>()</t>:有就返回第一条,没有就返回default(T)(null 或 0)——最常用 -
QueryFirst<t>()</t>:必须至少有一行,否则抛异常 -
QuerySingle<t>()</t>:必须且仅有一行,否则抛异常(适合主键精确查询) -
QuerySingleOrDefault<t>()</t>:最多一行,有就返回,没就 null,多于一行则抛异常
示例:
var user = connection.QueryFirstOrDefault<User>("SELECT * FROM Users WHERE Id = @Id", new { Id = 123 });登录后复制
动态与匿名查询:不用定义类也能查
临时查、调试、导出、字段不确定时,可用 dynamic 或匿名类型:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~