Dapper总结(一)---基本CRUD操作
一、dapper是什么
dapper是一款轻量级的ORM(Object Relationship Mapper),它负责数据库和编程语言之间的映射。SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection又是实现了IDBConnection的接口。因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,所以dapper支持多数据库。
二、dapper的简单使用
0、准备的测试类
//用户类
public class UserInfo
{
public int UId { get; set; }//用户Id
public string UserName { get; set; }//用户名
public int Age { get; set; }//年龄
public int RoleId { get; set; }//角色Id }
//角色类
public class RoleInfo
{
public int RId { get; set; }//角色Id
public string RoleName { get; set; }//角色名
}
1、execute方法,返回值为int类型,表示受影响行数
//插入数据
//单条数据插入
int result = conn.Execute("insert into userinfo values(@username,@age,@roleid)", new
{
UserName = "user1",
Age = ,
RoleId =
}); // result=1 //多条数据插入
List<UserInfo> users=new List<UserInfo>(){
new UserInfo(){UserName="user2",Age=,RoleId=},
new UserInfo(){UserName="user3",Age=,RoleId=},
new UserInfo(){UserName="user4",Age=,RoleId=},
}; int result2 = conn.Execute("insert into userinfo values(@username,@age,@roleid)", users); // result2=3 //修改
int rusultEdit = conn.Execute("update userinfo set age=25 where username=@username", new { UserName = "user0" }); //删除
int resultDel = conn.Execute("delete from userinfo where uid=@uid", new { UId = });
2、Query方法,返回值为IEnumerable类型
//带参数查询 例子:查询用户名为user1,年龄为20的用户
IEnumerable<UserInfo> query1 = conn.Query<UserInfo>("select * from userinfo where age=@Age and username=@username", new{Age=20,UserName="user1"})
//in查询 例子:查询年龄是20,21,或22的用户
IEnumerable<UserInfo> query2=conn.Query<UserInfo>("select * from userinfo where age in @ages",new {ages=new int []{,,}}); //返回多个结果集 例子:查询用户列表和角色列表
var sql = "select * from userinfo; select * from roleinfo";
var query3 = conn.QueryMultiple(sql);//GridReader类型
var usesList = query3.Read<UserInfo>();//IEnumberable类型
var roleList = query3.Read<RoleInfo>(); //表连接查询 例子:查询用户信息和其对应的角色名
//1、返回强类型结果
var sql2 = @"select u.username,u.age,u.uid ,r.rolename from userinfo as u join roleinfo as r on u.roleid=r.rid";
var result2 = conn.Query<UserInfo, RoleInfo, UserInfo>(sql2, (user, role) =>
{
user.Role = role;
return user;
}, splitOn: "RoleName");//splitOn参数表示分割,前边的是第一个对象的属性,后边的是第二个对象的属性 //2、返回动态类型结果
var result3 = conn.Query(sql2);
foreach (var item in result3)
{
Console.WriteLine("username:{0},rolename:{1}", item.username, item.rolename);
}
Dapper总结(一)---基本CRUD操作的更多相关文章
- Bootstrap+Knockout.JS+ASP.Net MVC3+PetaPOCO实现CRUD操作
Bootstrap+Knockout.JS+ASP.Net MVC3+PetaPOCO实现CRUD操作 1.需求: 1.1)页面要美观大气 1.2)前端代码要简洁清晰,要用MVC或是MVVM框架 1. ...
- net core天马行空系列: 泛型仓储和声明式事物实现最优雅的crud操作
系列目录 1.net core天马行空系列:原生DI+AOP实现spring boot注解式编程 哈哈哈哈,大家好,我就是那个高产似母猪的三合,长久以来,我一直在思考,如何才能实现高效而简洁的仓储模式 ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- ASP.NET Core Web API Cassandra CRUD 操作
在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将 ...
- 轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
上一篇博文中我们快速的介绍了dapper的一些基本CURD操作,也是我们manipulate db不可或缺的最小单元,这一篇我们介绍下相对复杂 一点的操作,源码分析暂时就不在这里介绍了. 一:t ...
- MongoDB的CRUD操作
1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...
- 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】
一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...
随机推荐
- HDU 2081 手机短号
Problem Description 大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号.假设所有的短号都是是 6+手机号的后5位,比 ...
- DockerHub使用简介
常用的Docker镜像文件都有,就不用自己费劲的一点点配置了,这才是Docker的真正目的.就像Ghost里边含office,直接还原,不用一台台机器安装呢,省时省力,与高效工作的理念相契合. 至于, ...
- /langversion 的选项“4”无效;必须是 ISO-1、ISO-2、3 或 Default SystemFrameWorkV3
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version Edit th ...
- asp.net core 2.0中的配置(1)---Configuration
配置就是一个装配数据字典的过程,一个字典也就是一个键值对,所以从配置就是键值对. 在asp.net core中关于配置是由四个基本的类型来支撑的,是①IConfigurationSource②ICon ...
- Linux查看版本
最简单的命令 lsb_release -a 查看机器名 hostname 查看内核版本 uname -r 红帽 centos 查看版本 cat /etc/redhat-release ubuntu 查 ...
- CSS 居中(拿来主义自用)
居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...
- PostgreSQL之连接数修改
当前总共正在使用的连接数 select count(1) from pg_stat_activity; 显示系统允许的最大连接数 show max_connections; 显示系统保留的用户数 sh ...
- 【Linux】工作管理
在进行工作管理的行为中,其实每个工作都是目前bash的子进程,即彼此间是有相关性的.我们无法以job control的方式由tty1的环境去管理tty2的bash 当只有一个终端时,可以出现提示符让你 ...
- Java过滤器Filter的使用详解
过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 如 ...
- Codeforces960G Bandit Blues 【斯特林数】【FFT】
题目大意: 求满足比之前的任何数小的有A个,比之后的任何数小的有B个的长度为n的排列个数. 题目分析: 首先写出递推式,设s(n,k)表示长度为n的排列,比之前的数小的数有k个. 我们假设新加入的数为 ...