zoukankan      html  css  js  c++  java
  • 自己整理了一个 Dapper的Helper助手类

    链接字符串配置:

    <connectionStrings>
        <add name="db" connectionString="server=.;database=db;uid=sa;pwd=123456;integrated security=false;"/>
      </connectionStrings>

    DapperHelper.cs :

    using Dapper;
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace PullChargeData.Helper
    {
        public class DapperHelper<T>
        {
            /// <summary>
            /// 数据库连接字符串
            /// </summary>
            private static readonly string connectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
    
            /// <summary>
            /// 查询列表(返回DataTable)
            /// </summary>
            /// <returns></returns>
            public static DataTable QueryToDataTable(string sql)
            {
                DataTable table = new DataTable("MyTable");
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    var reader = con.ExecuteReader(sql);
                    table.Load(reader);
                    return table;
                }
            }
    
            /// <summary>
            /// 查询列表
            /// </summary>
            /// <param name="sql">查询的sql</param>
            /// <param name="param">替换参数</param>
            /// <returns></returns>
            public static List<T> Query(string sql, object param = null)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Query<T>(sql, param).ToList();
                }
            }
    
            /// <summary>
            /// 查询第一个数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QueryFirst(string sql, object param = null)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Query<T>(sql, param).ToList().First();
                }
            }
    
            /// <summary>
            /// 查询第一个数据没有返回默认值
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QueryFirstOrDefault(string sql, object param = null)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Query<T>(sql, param).ToList().FirstOrDefault();
                }
            }
    
            /// <summary>
            /// 查询单条数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QuerySingle(string sql, object param = null)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Query<T>(sql, param).ToList().Single();
                }
            }
    
            /// <summary>
            /// 查询单条数据没有返回默认值
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QuerySingleOrDefault(string sql, object param = null)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Query<T>(sql, param).ToList().SingleOrDefault();
                }
            }
    
            /// <summary>
            /// 增删改
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns>Number of rows affected</returns>
            public static int Execute(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Execute(sql, param);
                }
            }
    
            /// <summary>
            /// Reader获取数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static IDataReader ExecuteReader(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.ExecuteReader(sql, param);
                }
            }
    
            /// <summary>
            /// Scalar获取数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static object ExecuteScalar(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.ExecuteScalar(sql, param);
                }
            }
    
            /// <summary>
            /// Scalar获取数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T ExecuteScalarForT(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.ExecuteScalar<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 带参数的存储过程
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static List<T> ExecutePro(string proc, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    List<T> list = con.Query<T>(proc,
                        param,
                        null,
                        true,
                        null,
                        CommandType.StoredProcedure).ToList();
                    return list;
                }
            }
    
    
            /// <summary>
            /// 事务1 - 全SQL
            /// </summary>
            /// <param name="sqlarr">多条SQL</param>
            /// <param name="param">param</param>
            /// <returns></returns>
            public static int ExecuteTransaction(string[] sqlarr)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    using (var transaction = con.BeginTransaction())
                    {
                        try
                        {
                            int result = 0;
                            foreach (var sql in sqlarr)
                            {
                                result += con.Execute(sql, null, transaction);
                            }
    
                            transaction.Commit();
                            return result;
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            return 0;
                        }
                    }
                }
            }
    
            /// <summary>
            /// 事务2 - 声明参数
            ///demo:
            ///dic.Add("Insert into Users values (@UserName, @Email, @Address)",
            ///        new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });
            /// </summary>
            /// <param name="Key">多条SQL</param>
            /// <param name="Value">param</param>
            /// <returns></returns>
            public static int ExecuteTransaction(Dictionary<string, object> dic)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    using (var transaction = con.BeginTransaction())
                    {
                        try
                        {
                            int result = 0;
                            foreach (var sql in dic)
                            {
                                result += con.Execute(sql.Key, sql.Value, transaction);
                            }
    
                            transaction.Commit();
                            return result;
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            return 0;
                        }
                    }
                }
            }
        }
    }
    

    调用方法

    //查 无参数
    var list = DapperHelper<T_User>.Query("select * from T_User ").ToList();
    //查 带参数
    var list = DapperHelper<T_User>.Query("select * from T_User where uid=@uid", new { uid = 1, }).ToList();
    //
    int ins = DapperHelper<T_User>.Execute("insert into T_User (uid,username) value(@uid,@username)", new { uid = 1, username = "张三" });
    //
    int upd = DapperHelper<T_User>.Execute("update T_User set username=@username where uid=@uid", new { username = "李四", uid = 1});
    //
    int del = DapperHelper<T_User>.Execute("delete from T_User where uid=@uid", new { uid = 1 });
  • 相关阅读:
    [2013腾讯马拉松 3月23日]HDU 4517 小小明系列故事——游戏的烦恼
    金山西山居初赛第三场 HDU 4551~HDU 4553
    Redis安装
    前端常用网址汇总
    Html5移动端页面布局通用模板暨移动端问题总结
    js数组去重,并统计最多项算法
    纯css实现下拉菜单
    js实现求平均数功能
    Html5+css3实现3D转动效果
    移动设备分辨率及响应式断点汇总
  • 原文地址:https://www.cnblogs.com/codedisco/p/12974582.html
Copyright © 2011-2022 走看看