首先需要添加 NuGet 包 Dapper 以及引用Configuration

 <connectionStrings>
     <add name="SqlSrc" connectionString="Data Source=.;Initial Catalog=Demo;Integrated Security=True"/>
</connectionStrings>
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ModelServer
{
public class DBDapper
{
//获取连接字符串
public readonly static string sqlconnct = System.Configuration.ConfigurationManager.ConnectionStrings["SqlSrc"].ConnectionString;
//初始化连接对象
public SqlConnection conn = null;
public DBDapper()
{
conn = new SqlConnection(sqlconnct);
}
/// <summary>
/// 打开数据库连接
/// </summary>
private void OpenConnect()
{
if (conn.State == ConnectionState.Closed)
{
try
{
conn.Open();
}
catch (Exception e)
{
throw e;
}
}
}
/// <summary>
/// 关闭数据库连接
/// </summary>
private void CloseConnect()
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
/// <summary>
/// 查询语句,必要形参sql语句或存储过程名称,后面参数用于扩展可以不写,若两边有参数中间用null占位
/// </summary>
/// <typeparam name="T">强类型的类</typeparam>
/// <param name="sql">sql执行语句或存储过程名称</param>
/// <param name="parameter">sql参数,可匿名类型,可对象类型</param>
/// <param name="transaction">执行事务</param>
/// <param name="buffered"></param>
/// <param name="commandTimeout"></param>
/// <param name="commandType"></param>
/// <returns>对象集合</returns>
public IEnumerable<T> GetInfoList<T>(string sql, object parameter = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = default(int?), CommandType? commandType = default(CommandType?))
{
try
{
OpenConnect();
//可以让结果转换成其他集合形式 例:list、array等集合,方法: ToList<>、ToArray<>
IEnumerable<T> result = conn.Query<T>(sql, parameter, transaction, buffered, commandTimeout, commandType);
CloseConnect();
return result;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 插入、更新或删除语句,必要形参sql语句或存储过程名称,后面参数用于扩展可以不写,若两边有参数中间用null占位
/// </summary>
/// <typeparam name="T">强类型的类</typeparam>
/// <param name="sql">sql执行语句或存储过程名称</param>
/// <param name="parameter">sql参数,可匿名类型,可对象类型</param>
/// <param name="transaction">执行事务</param>
/// <param name="commandTimeout"></param>
/// <param name="commandType"></param>
/// <returns>成功:true;失败:false</returns>
public bool UpdateSql(string sql, object parameter = null, IDbTransaction transaction = null, int? commandTimeout = default(int?), CommandType? commandType = default(CommandType?))
{
try
{
OpenConnect();
int result = conn.Execute(sql, parameter, transaction, commandTimeout, commandType);
CloseConnect();
if (result > )
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据条件获取数据库表中列表数量,必要形参sql,后面参数用于扩展可以不写,若两边有参数中间用null占位
/// </summary>
/// <param name="sql">sql执行语句或存储过程名称</param>
/// <param name="parameter">sql参数,可匿名类型,可对象类型</param>
/// <param name="transaction"></param>
/// <param name="buffered"></param>
/// <param name="commandTimeout"></param>
/// <param name="commandType"></param>
/// <returns></returns>
public int GetInfoCounts(string sql, object parameter = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = default(int?), CommandType? commandType = default(CommandType?))
{
try
{
OpenConnect();
//注意:sql语句应该是这种形式 select count(*) as rows from table
int result = conn.Query<int>(sql, parameter, transaction, buffered, commandTimeout, commandType).First();
CloseConnect();
return result;
}
catch (Exception ex)
{
throw ex;
}
}
} }

.net Mvc Dapper 方法封装的更多相关文章

  1. .Net Framework下对Dapper二次封装迁移到.Net Core2.0遇到的问题以及对Dapper的封装介绍

    今天成功把.Net Framework下使用Dapper进行封装的ORM成功迁移到.Net Core 2.0上,在迁移的过程中也遇到一些很有意思的问题,值得和大家分享一下.下面我会还原迁移的每一个过程 ...

  2. 1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)

    1.NetDh框架开始的需求场景 需求场景: 1.之前公司有不同.net项目组,有的项目是用SqlServer做数据库,有的项目是用Oracle,后面也有可能会用到Mysql等,而且要考虑后续扩展成主 ...

  3. Dapper的封装、二次封装、官方扩展包封装,以及ADO.NET原生封装

    前几天偶然看到了dapper,由于以前没有用过,只用过ef core,稍微看了一下,然后写了一些简单的可复用的封装. Dapper的用法比较接近ADO.NET所以性能也是比较快.所以我们先来看看使用A ...

  4. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  5. C#常用字符串加解密方法封装

    C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...

  6. 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释

    在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...

  7. C#方法封装与重构

    C#作为一个完全面向对象的语言,有个特性很重要但是往往会不重视,而不重视的结果就会造成代码杂乱难以解读.维护.这个特性就是封装.      这里不是大谈C#的封装,我只讲一个,关于方法封装的一些问题. ...

  8. Castle IOC FOR MVC 使用方法

    Castle Web.API 使用方法 一.创建 WindsorActivator 继承 IHttpControllerActivator public class WindsorActivator ...

  9. SpringMVC(八):使用Servlet原生API作为Spring MVC hanlder方法的参数

    在SpringMVC开发中,是有场景需要在Handler方法中直接使用ServletAPI. 在Spring MVC Handler的方法中都支持哪些Servlet API作为参数呢? --Respo ...

随机推荐

  1. 初始 vue

    1.js,jQuery编程范式:命令式编程 vue编程范式:声明式编程 v-for   遍历数组内容 v-on: click   监听点击事件,语法糖 @click el: 类型:string | H ...

  2. C# 下载模板

    /// <summary> /// 模板下载 /// </summary> /// <returns></returns> public ActionR ...

  3. ARM与X86 CPU架构区别

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言指 ...

  4. MD相关语法

    原文链接:https://www.jianshu.com/p/96ecaa2cc989 标题 一个#表示一级标题,最多6个表示6级标题 h1 h2 h3 h4 h5 h6 列表 无序列表,用 * + ...

  5. jq的ajax请求更改为axios请求时零碎总结

    #老版切新版更改处----ajax 更改为 axios //ajax$.ajax({ type: 'POST', url: url, data: data, success: success, dat ...

  6. Bootstrap 网页2

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <me ...

  7. PostgreSQL按年月日分组(关键词:extract time as Year/Month/Day)

    Select EXTRACT(year from cast(joindate as timestamp)) as Year, EXTRACT(month from cast(joindate as t ...

  8. JSON和fastjson

    一.JSON 语法规则: 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 名称/值对-->对象-->数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对. ...

  9. 深度解析双十一背后的阿里云 Redis 服务

    摘要: Redis是一个使用范围很广的NOSQL数据库,阿里云Redis同时在公有云和阿里集团内部进行服务,本文介绍了阿里云Redis双11的一些业务场景:微淘社区之亿级关系链存储.天猫直播之评论商品 ...

  10. Cisco基础(六):配置目前网络环境、项目阶段练习

    一.配置目前网络环境 目标: 一家新创建的IT公司,公司位于北京有80多台服务器 目前网络环境使用技术,通过端口映射技术将web服务器发布给Internet: 三层交换:汇聚接入层交换机 默认路由:实 ...