using Dapper;
using Newtonsoft.Json;
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;
using System.Web;
using VueWebApi.Models;
namespace VueWebApi.Tools
{
public class DapperHelper
{
///
/// 创建数据库连接对象Sqlserver
///
///
public static IDbConnection sqlConnection()
{
//string sqlServerConnectString = "server=***;database=***;User=***;password=***;Connect Timeout=10000";
string sqlServerConnectString = ConfigurationManager.AppSettings["DBServer"];
IDbConnection connection = new SqlConnection(sqlServerConnectString);
connection.Open();
return connection;
}
///
/// Dapper查询返回List
///
/// 需要返回的对象类型
/// Sql语句
///
///
public static List select(string sql, Object parm) where T : new()
{
List list = null;
using (IDbConnection conn = sqlConnection())
{
try
{
list = conn.Query(sql, parm).ToList();
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
return list;
}
///
/// Dapper查询返回List字典对象 无需手动Wapper对象了
///
///
///
///
public static List> selectToDict(string sql, Object parm)
{
List> result = null;
using (IDbConnection conn = sqlConnection())
{
try
{
var menus = conn.Query(sql, parm).ToList();
result = JsonConvert.DeserializeObject>>(JsonConvert.SerializeObject(menus));
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
return result;
}
///
/// Dapper查询返回对象非List集合
///
///
///
///
///
public static T selectToObject(string sql, Object parm) where T : new()
{
T t = new T();
//sql语句
using (IDbConnection conn = sqlConnection())
{
try
{
t = conn.Query(sql, parm).Single();
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
return t;
}
///
/// dapper通用分页函数
///
/// 泛型集合实体类
/// 查询语句
/// 排序(字段 DESC/ASC)
/// 当前页
/// 当前页显示条数
/// 结果集总数
///
public static IEnumerable GetPageList(string sql,Object parm, string orderBy,string sort, int pageIndex, int pageSize, out int total)
{
try
{
int skip = 1;
if (pageIndex > 0)
{
skip = (pageIndex - 1) * pageSize + 1;
}
StringBuilder sb = new StringBuilder();
sb.AppendFormat("SELECT COUNT(1) FROM ({0}) AS Result;", sql);
sb.AppendFormat(@"SELECT *
FROM(SELECT *,ROW_NUMBER() OVER(ORDER BY {1} {2}) AS RowNum
FROM ({0}) AS Temp) AS Result
WHERE RowNum >= {3} AND RowNum <= {4}
ORDER BY {1} {2}", sql, orderBy, sort, skip, pageIndex * pageSize);
using (IDbConnection conn = sqlConnection())
{
using (var reader = conn.QueryMultiple(sb.ToString(), parm))
{
total = reader.ReadFirst();
return reader.Read();
}
}
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
///
/// Dapper查询返回datatable数据
///
///
///
///
public static DataTable selectdata(string sql, Object parm)
{
//sql语句
try
{
using (IDbConnection conn = sqlConnection())
{
DataTable table = new DataTable();
var data = conn.ExecuteReader(sql, parm);
table.Load(data);
return table;
}
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
///
/// Dapper查询返回数据条数
///
///
///
///
public static int selectcount(string sql, Object parm)
{
//sql语句
int result = 0;
try
{
using (IDbConnection conn = sqlConnection())
{
result = conn.Query(sql, parm).Count();
}
return result;
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
///
/// Dapper增删改
///
///
///
///
public static int SQL(string sql,Object parametere)
{
//sql语句
int result = 0;
try
{
using (IDbConnection conn = sqlConnection())
{
result = conn.Execute(sql, parametere);
}
return result;
}
catch (Exception ex)
{
//创建日志记录组件实例
LogHelper.WriteLog(ex);
throw ex;
}
}
///
/// 增加,删除,修改使用的 事务方法 Sqllist为依次执行
///
///
///
public static bool DoTransaction(List