公司新项目用的是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子句上指定多个参数。