ORM-Dapper学习<四>.Dapper的基本用法

1.    新增

public int insert_user_info(user_info_model user)
        {
            using (conn)
            {
                string query = @"INSERT INTO user_info (name ,pwd ,loginDate)
                                 VALUES (@name,@pwd,@loginDate) ";
                int row = conn.Execute(query, user);
                //更新对象的Id为数据库里新增的Id,假如增加之后不需要获得新增的对象,
                //只需将对象添加到数据库里,可以将下面的一行注释掉。
                int max_id = SetIdentity(conn, id => user.id = id, "id", "user_info");
                return row;
            }
        }
注1:附加SetIdentity方法(.net3.5及以下):
/// <param name="conn">IDbConnection</param>
/// <param name="setId">ActionID</param>
/// <param name="primarykey">主键</param>
/// <param name="tableName">表名</param>
public int SetIdentity(IDbConnection conn, Action<int> setId, string primarykey, string tableName)
        {
            if (string.IsNullOrEmpty(primarykey)) primarykey = "id";
            if (string.IsNullOrEmpty(tableName))
            {
                throw new ArgumentException("tableName参数不能为空,为查询的表名");
            }
            string query = string.Format("SELECT max({0}) as id FROM {1}", primarykey, tableName);
            NewId identity = conn.Query<NewId>(query, null).Single();
            setId(identity.Id);
            return identity.Id;
        }

注2:借助Net4.0新增的dynamic动态类型实现SetIdentity(建议使用此方法)
public int SetIdentity<user_info>( user_info_model user, IDbConnection conn, Action<int> setId)
        {
            dynamic identity = conn.Query("INSERT INTO user_info (name ,pwd ,loginDate)
                                           VALUES (@name,@pwd,@loginDate);
SELECT @@IDENTITY AS Id").Single();
            NewId id = (NewId)identity.Id;
            setId(id.Id);
            return id.Id;
        }

2.    更新

public int update_user_info_by_id(int id, string name)
        {
            using (conn)
            {
                string query = @"Update user_info SET name = @name WHERE id = @id ";
                return conn.Execute(query, new { id, name });
            }
        }

3.    删除

public int delete_user_info_by_id(int id)
        {
            using (conn)
            {
                string query = @"DELETE FROM user_info WHERE id = @id ";
                return conn.Execute(query, new { id });
            }
        }

4.    查询

public IEnumerable<user_info_model> get_user_info()
        {
            using (conn)
            {
                string query = @"SELECT * FROM user_info ";
                return conn.Query<user_info_model>(query);
            }
        }

5.    传参及SQL语句关键字用法

public user_info_model get_user_info_by_id(int id, string name)
        {
            user_info_model user;
            using (conn)
            {
                string query = "SELECT * FROM user_info WHERE id [email protected] AND name like @name ";
                user = conn.Query<user_info_model>(query, new { id, name }).FirstOrDefault();
                return user;
            }
        }

注一:当传进来的参数名称与sql语句中的相同时,不需指定参数(示例如上),反之需要指定参数(示例如下):

参数:int id1, string name1
Sql语句:同上示例
user = conn.Query<user_info_model>(query, new { id = id1, name = name1 }).SingleOrDefault();
时间: 2024-08-24 01:59:41

ORM-Dapper学习<四>.Dapper的基本用法的相关文章

Dapper学习(三)之其他用法

这里说的其他用法,是指 Async,Buffered,Transaction,Stored Procedure. 1. 首先 dapper支持异步 ExecuteAsync, QueryAsync, QueryFirstAsync, QueryFirstOrDefaultAsync, QuerySingleAsync, QuerySingleOrDefaultAsync, QueryMultipleAsync ExecuteAsync 用法示例: string sql = "INSERT INT

ORM之轻量级框架--Dapper

转自:https://www.cnblogs.com/Erhao/p/10042808.html 一.什么是Dapper? Dapper是一款轻量级Orm框架,它是属于半自动的,它和Entity Framework和NHibernate不同,它只有一个单文件,没有很复杂的配置,如果你喜欢原生Sql语句,而且又是喜欢Orm框架,那么Dapper对于你来说是再适合不过了. 二.Dapper优点我也是刚开始学习Dapper,让我自己去总结它的优点,可能也就还没真正去体验到带来的好.所以我也是抱着学习的

Python爬虫利器四之PhantomJS的用法

前言 大家有没有发现之前我们写的爬虫都有一个共性,就是只能爬取单纯的html代码,如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS渲染的到的一些结果,那简直没天理了.所以,我们需要有一些好用的工具来帮助我们像浏览器一样渲染JS处理的页面. 其中有一个比较常用的工具,那就是 PhantomJS Full web stack No browser required PhantomJS is a headless WebKit scriptable with a Ja

POI学习之道:HSSFWorkBooK用法

public ActionResult excelPrint() { HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 HSSFSheet sheet = workbook.createSheet();// 创建一个Excel的Sheet sheet.createFreezePane(1, 3);// 冻结 // 设置列宽 sheet.setColumnWidth(0, 1000); sheet.setColumnWidth(1,

nodejs学习四 Node.js NPM

什么是NPM? 不知道大家注意没有,windows平台下的Node.js安装包大小才区区4M多,真可以用短小精悍来形容它,作为一种编程语言,像java一个SDK 就几十M,为什么node.js的运行环境这么小呢?这其中的微妙之处在于,它拥有一个庞大的第三方软件库. 在Node本身提供的包(原生)中没有我们要实现的功能模块的时候,我们可以去寻找下是否已经有人实现了这种功能.毕竟重复造轮子这种事情,很多人都不想干. 去哪里寻找我们想要的包呢?如果你还不知道报的名字,你可以去https://www.n

ZigBee学习四 无线+UART通信

ZigBee学习四 无线+UART通信 1) 协调器编程 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique message ID (counter) afAddrType_t GenericApp_DstAddr; //unsigned char uartbuf[128];/********************************************************************** L

Spark学习四:网站日志分析案例

Spark学习四:网站日志分析案例 标签(空格分隔): Spark Spark学习四网站日志分析案例 一创建maven工程 二创建模板 三日志分析案例 一,创建maven工程 1,执行maven命令创建工程 mvn archetype:generate -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple -DremoteRepositories=http://scal

Beaglebone Back学习四(GPIO实验)

GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有"复用"的特性,大约每个引脚有8种工作模式(Beagle System Reference Manual),默认情况下,设为Mode7.由于P8扩展部分的引脚功能相对简单,复用不多,故项目功能复杂时,最好选择P8上的GPIO口. 对GPIO口的操作,主要有三个步骤 1 选择GPIO口根据以下两表,确定使用那个GPIO口,该表也可以在BBB_SRM文件中找到. (1)拉电流

Silverlight学习(四) domainservice动态多条件查询

上次讲了silverlight+MVVN+EF的简单框架,能够实现简单的数据CURD,但是多条件动态的查询一直没有实现.在网上查阅了很多资料,发现自己走了很多误区,代码很难调试正确. 这次的查询是基于上次的查询,只是增加了一个查询条件,动态多条件的查询的重点是获取查询的语言. 1 private string GetSql() 2 { 3 string query = "1=1"; 4 if (!string.IsNullOrEmpty(searchText.name)) 5 { 6