首先我想说明一下:相比最原始的ADO.NET,一般都认为封装过一层的ORM性能上会有损耗,但其实在使用中你会发现,当你需要把数据库对象转化为实体模型时,很多所谓的DbHelper其实封装的很低效,反而是成熟的orm框架性能非常高;

在操作之前先在nuget里获取dapper和mysql.data的程序包:

插入数据:

        /// <summary>
        /// 增加一条数据
        /// </summary>
        public bool Add(User model)
        {
            ;
            string sQuery = "INSERT INTO user (Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time)"
                              + " VALUES(@Id,@Login_Name,@User_Pwd,@User_Name,@Phone_Num,@Head_Portrait,@Enabled,@Create_Time,@Update_Time)";
            using (var connection = new MySqlConnection(connstr))
            {

                cnt = connection.Execute(sQuery, model);
            }

            )
            {
                return true;
            }
            else
            {
                return false;
            }
        }

删除数据

      /// <summary>
        /// 根据ID删除一条数据
        /// </summary>
        public bool Delete(int id)
        {
            ;
            string sQuery = "Delete FROM user " + "WHERE Id=@Id";
            using (var connection = new MySqlConnection(connstr))
            {
                cnt = connection.Execute(sQuery, new { Id = id });
            }
            )
            {
                return true;
            }
            else
            {
                return false;
            }
        }

修改数据

        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(User model)
        {
            string sQuery = "UPDATE user SET Login_Name=@Login_Name,User_Pwd=@User_Pwd,User_Name=@User_Name,Phone_Num=@Phone_Num,Head_Portrait=@Head_Portrait,Enabled=@Enabled,Create_Time=@Create_Time,Update_Time=@Update_Time"
                 + " WHERE Id=@Id";
            ;
            using (var connection = new MySqlConnection(connstr))
            {

                cnt = connection.Execute(sQuery, model);
            }
            )
            {
                return true;
            }
            else
            {
                return false;
            }
        }

查询数据

        /// <summary>
        /// 根据ID获取实体对象
        /// </summary>
        public User GetModel(int id)
        {
            string sQuery = "SELECT Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time FROM user " + "WHERE Id = @Id";

            using (var connection = new MySqlConnection(connstr))
            {
                return connection.Query<User>(sQuery, new { Id = id }).FirstOrDefault();
            }
        }

调用分页存储过程

        /// <summary>
        /// 分页获取数据列表
        /// </summary>
        public IEnumerable<User> GetListByPage(int PageSize, int PageIndex, string strWhere, string orderStr, ref int rowsnum)
        {
            using (var connection = new MySqlConnection(connstr))
            {
                var param = new DynamicParameters();
                param.Add("@p_table_name", "user");
                param.Add("@p_fields", "Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time");
                param.Add("@p_page_size", PageSize);
                param.Add("@p_page_now", PageIndex);
                param.Add("@p_where_string", strWhere);
                param.Add("@p_order_string", orderStr);
                param.Add(, DbType.Int32, ParameterDirection.Output);
                IEnumerable<User> infoList = connection.Query<User>("pr_pager", param, null, true, null, CommandType.StoredProcedure);
                rowsnum = param.Get<int>("@p_out_rows");
                return infoList;
            }

在不进行任何代码特殊优化的测试中,同过Emit反射IDataReader的序列队列,来快速的得到和产生对象的dapper性能是很不错的。

使用Dapper操作Mysql数据库的更多相关文章

  1. .NET Core Dapper操作mysql数据库

    前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...

  2. Dapper操作MySQL数据库获取JSON数据中文乱码

    前言 在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. Dapper获取J ...

  3. .NET Core 使用Dapper 操作MySQL

    MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...

  4. ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)

    操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...

  5. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  6. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  7. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  8. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  9. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

随机推荐

  1. display:inline-block间隙问题

    display:inline-block 是让块级元素变成行内元素 在一行显示, 然而不幸的是,它并没有得到所有浏览器的支持,比如ie6.7和古老一点的firefox完全无视它,由于firefox的老 ...

  2. 第1阶段——uboot分析之启动函数bootm命令 (9)

    本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0"中怎么实现bootm命令 ...

  3. poj 3592 缩点+SPFA

    题意:给出一个矩阵,其中#代表墙,不可走,0-9代表权值,*代表可以选择传送.求从0,0点开始出发能获得最大权值. 思路:因为*的出现会有环的情况,先建图连边,将环进行Tarjan缩点,之后再从0,0 ...

  4. NHibernate教程(13)--立即加载

    本节内容 引入 立即加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过上一篇的介绍,我们知道了NHibernate中默认的加载机制--延迟加载.其本质就是使用GoF23中代理模式 ...

  5. 用shell批量编码转换

    -------------------------------------文件内容转换:iconv-------------------------------------- 通常,从其他平台拷贝过来 ...

  6. 微软为啥让免费升Win10?

           今天终于赶在截止日期之前把我的联想PC升到win10.微软这次对中国开放的持续一年的免费升级活动主要有两个原因.首先当然是"感恩Windows用户长久支持的回馈".微 ...

  7. Wireshark抓包TCP三次握手数据

    抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封 ...

  8. GUI(国际象棋棋盘)

    package com.niit.javagui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridB ...

  9. 【Beta】 第三次Daily Scrum Meeting

    一.本次会议为第三次meeting会议 二.时间:10:00AM-10:20AM 地点:禹州楼 三.会议站立式照片 四.今日任务安排 成员 昨日任务 今日任务 林晓芳 查询app提醒功能模块和用户登录 ...

  10. 201521123101 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 理解类的继承的概念,明白父与子之间关系的 2. 书面作业 1.注释的应用,使用类的注释与方法 ...