dapper的使用
时间:2021-07-15
本文章向大家介绍dapper的使用,主要包括dapper的使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
dapper的使用
安装
控制台中安装
Install-Package Dapper
方法 :Execute
返回: 受影响的行数
执行: 删 改 查
参数:
Execute(sql, //查询语句
param, // default = null 参数
transaction, //default = null 事务
commandTimeout, //default = null 最大连接时间
commandType //default = null 命令类型?
)
代码:
/// <summary>
/// Execute插入一条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
Person person = new Person("zhangsan","12345234@gmail.com","3212151343","男");
string sqlstr = "INSERT INTO person(name,email,gender,phone) VALUES(@name,@email,@gender,@phone) ";
int affectedRows = conn.Execute(sqlstr,
person,
null,
null);
textBox1.Text = affectedRows.ToString();
}
}
/// <summary>
/// Execute插入多条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
List<Person> personList = new List<Person>();
personList.Add(new Person("zhangsan", "12345234@gmail.com", "3212151343", "男"));
personList.Add(new Person("zhsffa", "1232431534@gmail.com", "31511511543", "男"));
string sqlstr = "INSERT INTO person(name,email,gender,phone) VALUES(@name,@email,@gender,@phone) ";
int affectedRows = conn.Execute(sqlstr,
personList,
null,
null);
textBox1.Text = affectedRows.ToString();
}
}
/// <summary>
/// Execute 更新一条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
Person person = new Person();
person.Id = 15;
person.Gender = "改改看";
string sqlstr = "UPDATE person SET gender = @gender WHERE id = @id ";
int affectedRows = conn.Execute(sqlstr,
person,
null,
null);
textBox1.Text = affectedRows.ToString();
}
}
/// <summary>
/// Execute 更新多条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
List<Person> personList = new List<Person>();
personList.Add(new Person(3,"", "", "3212151343", "^-^"));
personList.Add(new Person(5,"zhsffa", "1232431534@gmail.com", "31511511543", "^0^"));
string sqlstr = "UPDATE person SET gender = @gender WHERE id = @id ";
int affectedRows = conn.Execute(sqlstr,
personList,
null,
null);
textBox1.Text = affectedRows.ToString();
}
}
/// <summary>
/// Execute 删除一条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
string sqlstr = "DELETE FROM person WHERE id = @id ";
int affectedRows = conn.Execute(sqlstr,
new { id = 9},
null,
null);
textBox1.Text = affectedRows.ToString();
}
}
方法 :Query
Query QueryFirst QueryFirstOrDefault
返回:映射结果
执行: 匿名 强类型? 一对一 一对多 多类型?
参数:
Query(sql, //查询语句
param, // default = null 参数
transaction, //default = null 事务
buffered, //default = null 查询的缓冲结果?
commandTimeout, //default = null 最大连接时间
commandType //default = null 命令类型?
)
代码
/// <summary>
/// Query 查询一条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button7_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
string sqlstr = "SELECT * FROM person ";
Person person = conn.Query<Person>(sqlstr).FirstOrDefault();
textBox1.Text = person.ToString();
}
}
/// <summary>
/// 查询多条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button8_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
List<Person> personList = new List<Person>();
string sqlstr = "SELECT * FROM person ";
personList = conn.Query<Person>(sqlstr).ToList();
string str = null;
foreach (Person person in personList)
{
str += person.ToString();
}
textBox1.Text = str;
}
}
/// <summary>
/// Query 一对一查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button9_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
List<Person> personList = new List<Person>();
string sqlstr = "SELECT p.*,r.role_name FROM person p INNER JOIN role r ON p.role_id = r.role_id";
var list = conn.Query<Person, Role, Person>(sqlstr,
(person, role) => { person.Role = role; return person; },
null,
null,
true,
splitOn:"role_id"
).ToList();
this.dataGridView1.DataSource = list;
}
}
/// <summary>
/// Query 一对多查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button10_Click(object sender, EventArgs e)
{
// 姑且这么用,但是很多东西还不明白 比如赋值的过程
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
List<Person> personList = new List<Person>();
var lookUp = new Dictionary<int, Person>();
string sqlstr = "SELECT p.* ,r.*,s.* " +
"from person_role s " +
"left join person p on p.id = s.person_id " +
"left join role r on s.role_id = r.role_id";
var list = conn.Query<Person, Role, Person>(sqlstr,
(person, role) => {
Person p;
if (!lookUp.TryGetValue(person.Id,out p))
{
lookUp.Add(person.Id, p = person);
}
person.RoleList.Add(role);
return person; },
null,
null,
true,
splitOn:"role_id,id"
).ToList();
this.dataGridView1.DataSource = list;
}
}
事务
/// <summary>
/// 事务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button11_Click(object sender, EventArgs e)
{
using (IDbConnection conn = SqlConnection.MySqlConnection())
{
IDbTransaction trans = conn.BeginTransaction();
try
{
Person person1 = new Person("zhangsan", "12345234@gmail.com", "3212151343", "男");
Person person2 = new Person("asdfban", "2345765@gmail.com", "87654", "男");
string sqlstr = "INSERT INTO person(name,email,gender,phone) VALUES(@name,@email,@gender,@phone) ";
int affectedRows1 = conn.Execute(sqlstr,
person1,
trans,
null);
int affectedRows2 = conn.Execute(sqlstr,
person2,
trans,
null);
trans.Commit();
textBox1.Text = affectedRows1.ToString() + "---"+ affectedRows2.ToString();
}
catch (Exception)
{
trans.Rollback();
}
}
}
ps:直接运行可能会有些错误,仅提供思路 Gitee
原文地址:https://www.cnblogs.com/alideluobo/p/15015816.html
- 并发系列:从原子更新到CPU锁
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
- 神经网络 之 感知器的概念和实现
- 图解ByteBuffer
- TensorFlow-1: 如何识别数字
- 你应该知道的Java垃圾收集器 - 串行、并行、CMS、G1
- ckplayer 如何在PC上完美支持 m3u8播放
- TensorFlow-2: 用 CNN 识别数字
- js图片前端预览之 filereader 和 window.URL.createObjectURL
- TensorFlow-3: 用 feed-forward neural network 识别数字
- TensorFlow-4: tf.contrib.learn 快速入门
- TensorFlow-5: 用 tf.contrib.learn 来构建输入函数
- 前后端分离之vue2.0+webpack2 实战项目 -- html模板拼接
- 抛弃vue-resource拥抱axios
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 测试面试题集锦(三)| 计算机网络和数据库篇(附答案)
- 关于Scikit-Learn你(也许)不知道的10件事
- 技术天地 | CSS-in-JS:一个充满争议的技术方案
- 安全研究 | 通过域名劫持实现Azure DevOps账户劫持
- 一款针对DLL劫持的恶意DLL生成器
- AuthMatrix:一款针对Web应用和服务的认证安全检测BurpSuite工具
- KITT-Lite:基于Python实现的轻量级命令行渗透测试工具集
- 一次KimSuky攻击事件分析
- OpenCV中如何使用滚动条动态调整参数
- 一文读懂「分布式架构」
- 老哥,您看我这篇Java集合,还有机会评优吗?
- 在 IDEA 中使用 Java 热部署插件 JRebel
- 后端必备 Git 分支开发:规范指南
- 大量的 TIME_WAIT 状态连接怎么处理?(文末有福利)
- 线上教育系统开发中,购物车功能是如何实现的?