using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using Dapper;
namespace BaseDao
{
/// <summary>
/// Dapper框架 增删改查事务帮助类
/// </summary>
/// <typeparam name="T"></typeparam>
public static class DbHelper<T>
{
private static readonly string connStr = ConfigurationManager.ConnectionStrings["sqlConnStr"].ConnectionString;
#region 增删改
/// <summary>
/// 增删改
/// </summary>
/// <param name="sqlQuery">sql语句</param>
/// <param name="model">实体放</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sqlQuery, object param)
{
using (SqlConnection db = new SqlConnection(connStr))
{
db.Open();
return db.Execute(sqlQuery, param);
}
}
#endregion
#region 根据条件查询返回单个实体
/// <summary>
/// 根据条件查询返回单个实体
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public static T GetEntityBy(string sqlQuery, object param)
{
using (SqlConnection db = new SqlConnection(connStr))
{
db.Open();
return db.QuerySingleOrDefault<T>(sqlQuery, param);
}
}
#endregion
#region 查询一张表
/// <summary>
/// 查询一张表
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public static List<T> GetListBy(string sqlQuery, object param)
{
using (SqlConnection db = new SqlConnection(connStr))
{
db.Open();
return db.Query<T>(sqlQuery, param).ToList();
}
}
#endregion
#region 事务1 全SQL
/// <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(connStr))
{
con.Open();
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;
}
}
}
}
#endregion
#region 事务2 - 声明参数
/// <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(connStr))
{
con.Open();
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;
}
}
}
}
#endregion
#region 批量删除
/// <summary>
/// 批量删除
/// </summary>
/// <param name="list"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static int DelList(string sql, List<T> list)
{
using (SqlConnection db = new SqlConnection(connStr))
{
db.Open();
using (var tran = db.BeginTransaction())
{
try
{
int result = 0;
result += db.Execute(sql, list, tran);
tran.Commit();
return result;
}
catch (Exception ex)
{
tran.Rollback();
return 0;
}
}
}
}
#endregion
}
}