Dapper相关了解

公司新项目用的是Dapper,做的时候没有具体看dapper的具体用法,现在回来回顾总结一下。

1-总体介绍dapper

我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db。

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

现在基本上已经远离SqlHelper时代了。

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

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

 

2-安装dapper

通过nuget包进行安装。或者登陆www.nuget.org  搜索dppaer

 

 

 

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子句上指定多个参数。

 

posted @ 2019-03-13 16:34  金刚9527  阅读(278)  评论(0编辑  收藏  举报