Dapper相关了解

公司新项目用的是Dapper,作的时候没有具体看dapper的具体用法,如今回来回顾总结一下。sql

1-整体介绍dapper数据库

咱们都知道ORM全称叫作Object Relationship Mapper,也就是能够用object来map咱们的db。app

Dapper是一个轻量级的ORM。以前最经常使用的ORM是EF,其实EF底层是Ado.net实现的。网站

如今基本上已经远离SqlHelper时代了。spa

Dapper支持多数据库。支持多数据库的本质是由于dapper是对IDBConnection接口进行了方法扩展。.net

SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection实现了IDBConnection的接口3d

 

2-安装dapper对象

经过nuget包进行安装。或者登录www.nuget.org  搜索dppaerblog

 

 

 

3.操做继承

 引入 system.configuration  配置一下数据库连接字符串
 ps:推荐一个网站  https://www.connectionstrings.com 数据库配置网站

查询

Query

Query方法是一种扩展方法,能够从IDbConnection类型的任何对象种调用。它能够执行查询并映射结果

 

示例 - 查询匿名

能够使用Query方法执行原始SQL查询,并将结果映射到动态列表。

string sql = "select * from table1";
using( var db = new SqlConnection("Data  Source=TestDapper.sdf"))
{
   var info = db.query(sql);
}

 示例 - 强类型查询

 

string sql = "select * from table1";
using( var db = new SqlConnection("Data  Source=TestDapper.sdf"))
{
   var info = db.query<Table1>(sql);
}
 

示例 - 一对一映射

将2张表的关系一对一的映射到强类型中

var  sql = "select * from table1 a INNER JOIN table2 b  on a.id=b.id";

var info = db.Query<Table1 , Table2 , Table1>(

          sql,

         (table1 , table2) =>

         {

              table1.column = table2;

              return table1;

         },
         splitOn:"column";

)

splitOn是分割字段

Query的扩展方法
1 QueryFirst
2 QueryFirstOrDefault
3 QuerySingle
4 QuerySingleOrDefault

 

QueryFirst | QueryFirstOrDefault | QuerySingle | QuerySingleOrDefault 对比

QueryFirst

匿名对象及强类型对象 
string sql  = "  select * from table1  where  Id = @id";
var info = db.QueryFirst(sql , new { id  = 1})

string sql  = "  select * from table1  where  Id = @id";
var info = db.QueryFirst<Table1>(sql , new { id  = 1})

QueryFirstOrDefault

执行查询并返回结果,若结果为空,则返回默认值,若返回多个结果,则默认结果,如果单个结果,则映射给匿名对象或强类型对象

string sql  = "  select * from table1  where  Id = @id";
var info = db.QueryFirstOrDefault<Table1>(sql , new { id  = 1})

QuerySingle

执行查询并返回结果,若结果为空或者返回多个结果,将抛出异常

string sql  = "  select * from table1  where  Id = @id";
var info = db.QuerySingle<Table1>(sql , new { id  = 1})

QuerySingleOrDefault

执行查询并返回结果,若结果为空或者返回多个结果,将抛出异常,反之映射给匿名对象或强类型对象

string sql  = "  select * from table1  where  Id = @id";
var info = db.QuerySingleOrDefault<Table1>(sql , new { id  = 1})

QueryMultiple

它能够在同一命令中执行多个查询并返回多个结果

string sql  = "  select * from table1  where  Id = @id ; select * from table2  where  Id = @id ; ";
var info =
db.QueryMultiple(sql  , new { id = 1})

var TableInfo1 = info.Read<Table1>();
var TableInfo2 = info.Read<Table2>();


Dapper容许您使用列表在IN子句上指定多个参数。

相关文章
相关标签/搜索