公司新項目用的是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方法是一種擴展方法,能夠從IDbConnection類型的任何對象種調用。它能夠執行查詢並映射結果
示例 - 查詢匿名
能夠使用Query方法執行原始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
匿名對象及強類型對象
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})
執行查詢並返回結果,若結果爲空,則返回默認值,若返回多個結果,則默認結果,如果單個結果,則映射給匿名對象或強類型對象
string sql = " select * from table1 where Id = @id";
var info = db.QueryFirstOrDefault<Table1>(sql , new { id = 1})
執行查詢並返回結果,若結果爲空或者返回多個結果,將拋出異常
string sql = " select * from table1 where Id = @id";
var info = db.QuerySingle<Table1>(sql , new { id = 1})
執行查詢並返回結果,若結果爲空或者返回多個結果,將拋出異常,反之映射給匿名對象或強類型對象
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子句上指定多個參數。