0. FIrst , Single & Default

使用这个方法时要小心,First 和 Single 是不同的。

这里,对这个表做下说明:

如果使用 First , 当没有查到元素时,会报错;如果查到一个元素,会返回这个元素;如果查到多个元素,会返回第一个元素;

如果使用 Single , 没有查到元素会报错;查到一个元素,则返回这个元素;查到多个元素,则报错;

如果使用 FirstOrDefault , 没有查到元素会返回默认值;如果查到一个元素,则返回这个元素;如果查到多个元素,则返回第一个元素;

如果使用 SingleOrDefault , 没有查到元素返回默认值;如果查到一个元素,则返回这个元素;如果查到多个元素,则报错;

1. QueryFirst

可以用来查询和映射第一个结果

结果可以被映射到:

  • Anonymous
  • Strongly Typed

参数

1.1 Query Anonymous

执行一个查询,并且映射第一个结果到一个动态集合

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QueryFirst(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(orderDetail);
}

1.2 Query Strongly Typed

执行一个查询,并且映射第一个结果到一个强类型集合

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QueryFirst<OrderDetail>(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(orderDetail);
}

2. QueryFirstOrDefault

执行一个查询,并且映射第一个结果,或者如果没查到元素时,返回一个默认值

结果可以被映射到:

  • Anonymous
  • Strongly Typed

参数

2.1 Query Anonymous

执行一个查询,并且映射第一个结果到一个动态集合,或者如果没查到元素,则返回一个默认值

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QueryFirstOrDefault(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(orderDetail);
}

2.2 Query Strongly Typed

执行一个查询,并且映射第一个结果到一个强类型集合,或者如果没查到元素,则返回一个默认值

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QueryFirstOrDefault<OrderDetail>(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail });
}

3. QuerySingle

执行查询,并且映射第一个结果,如果查到不止一个元素,则会抛出异常

结果可以映射到:

  • Anonymous
  • Strongly Typed

参数

3.1 Query Anonymous

执行查询,映射第一个结果到一个动态集合,如果查到不止一个元素,抛出异常

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QuerySingle(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(orderDetail);
}

3.2 Query Strongly Typed

执行查询,并且映射第一个结果到一个强类型集合,如果查到不止一个元素,则抛出异常

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QuerySingle<OrderDetail>(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail });
}

4. QuerySingleOrDefault

执行查询,并且映射第一个结果,或者如果查询结果为空,则返回默认值;如果查到不止一个元素,则抛出异常

结果映射到:

  • Anonymous
  • Strongly Typed

参数

4.1 Query Anonymous

执行查询,并且映射第一个结果到一个动态集合,或者如果查询结果为空,则返回一个默认值;如果查到不止一个元素,则抛出异常。

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QuerySingleOrDefault(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(orderDetail);
}

4.2 Query Strongly Typed

执行查询,并且映射第一个结果到一个强类型集合,或者如果查询结果为空,则返回一个默认值;如果查到不止一个元素,则抛出异常

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var orderDetail = connection.QuerySingleOrDefault<OrderDetail>(sql, new {OrderDetailID = }); FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail });
}

5. QueryMultiple

它可以在同一个命令中执行多个查询,并且映射到结果中

string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID; SELECT * FROM InvoiceItem WHERE InvoiceID = @InvoiceID;";

using (var connection = My.ConnectionFactory())
{
connection.Open(); using (var multi = connection.QueryMultiple(sql, new {InvoiceID = }))
{
var invoice = multi.Read<Invoice>().First();
var invoiceItems = multi.Read<InvoiceItem>().ToList();
}
}

参数

Dapper学习(二)之Query相关的更多相关文章

  1. spring学习二:jdbc相关回顾以及spring下dao

    目录: Part一:回顾java web部分的jdbc.事务.连接池和dbutils工具等 : Part二:spring的JdbcTemplate使用: Part三:spring的事务处理: Part ...

  2. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  3. dapper 学习

    上一篇, 提到Query<Test>查询的时候, 如果Test中包含自定义class, Dapper不会给自定义class完成映射, 而是直接给null, 其实是可以实现的, 答案就在下面 ...

  4. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

  5. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  6. Android JNI学习(二)——实战JNI之“hello world”

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  7. Dapper学习(三)之其他用法

    这里说的其他用法,是指 Async,Buffered,Transaction,Stored Procedure. 1. 首先 dapper支持异步 ExecuteAsync, QueryAsync, ...

  8. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  9. Dubbo源码学习(二)

    @Adaptive注解 在上一篇ExtensionLoader的博客中记录了,有两种扩展点,一种是普通的扩展实现,另一种就是自适应的扩展点,即@Adaptive注解的实现类. @Documented ...

随机推荐

  1. c#实现深拷贝的几种方法

    为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做,看代码 public cla ...

  2. 数据结构之稀疏矩阵C++版

    //只是简单的演示一下,这个实际运用视乎不怎么多,所以java版不再实现 /* 希疏矩阵应用于对数据的压缩,仅仅保留不为0的数据 稀疏矩阵的转置,可以由多种方式,下面演示的稍显简单,时间复杂度略高O( ...

  3. kafka客户端和服务端开发(三)

    前面我们已经搭建了kafka的单机和集群环境,分别写了简单的实例代码,对于代码里面使用到的参数并没有做解释.下面我们来详细说一下各个参数的作用. 1. 创建kafka生产者 kafka生产者有3个必选 ...

  4. java并发编程(一)----线程基础知识

    在任何的生产环境中我们都不可逃避并发这个问题,多线程作为并发问题的技术支持让我们不得不去了解.这一块知识就像一个大蛋糕一样等着我们去分享,抱着学习的心态,记录下自己对并发的认识. 1.线程的状态: 线 ...

  5. 使用appscan安全扫描问题以及解决办法

    最近在做安全扫描,把遇到的一些问题以及一些解决方法记录下,以备后用. 扫描软件: IBM Security AppScan Standard  规则: 17441 1. 已解密的登录请求 (高) - ...

  6. 6.PHP操作MySQL的步骤

    第一步:PHP连接MySQL服务器 第三步:设置MySQL请求或返回数据的字符集 第四步:执行各种SQL语句 l 查询SQL语句:mysql_query(“SELECT * FROM 007_news ...

  7. Apex 获取真正的IP地址

    代码如下 declare l_ip varchar2(15); begin if OWA_UTIL.GET_CGI_ENV('X-FORWARDED-FOR') is not null then l_ ...

  8. 2017版 Jetbrains 系列软件激活方法

    1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...

  9. 用小程序·云开发两天搭建mini论坛丨实战

    笔者最近涉猎了小程序相关的知识,于是利用周末时间开发了一款类似于同事的小程序,深度体验了小程序云开发模式提供的云函数.数据库.存储三大能力.关于云开发,可参考文档:小程序·云开发. 个人感觉云开发带来 ...

  10. linux常用命令示例汇总

    1.ping -c 3 -i 0.1 -W 1 -t 3 100.100.242.181 -c发包数目,-c 3三个 -i,发包间隔,-i 0.1,每隔0.1秒发一个包 -W,发包超时时间,-W 1, ...