using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
namespace WebAPI.Dapper
{
public class SqlHelper
{
private readonly string _connStr;
public SqlHelper(string connStr)
{
_connStr = connStr;
}
IDbConnection GetConnection()
{
IDbConnection db = new SqlConnection(_connStr);
db.Open();
return db;
}
///
/// 获取一个值,param可以是SQL参数也可以是匿名对象
///
///
///
///
///
///
///
///
public T GetValue(string sql, object param = null, int? commandTimeout = null, CommandType? commandType = null)
{
using (var connection = GetConnection())
{
return connection.ExecuteScalar(sql, param, null, commandTimeout, commandType);
}
}
///
/// 事务执行
///
///
///
///
///
///
public int Trans(string sql1, string sql2, object obj1, object obj2)
{
using (var connection = GetConnection())
{
IDbTransaction transaction = connection.BeginTransaction();
try
{
connection.Execute(sql1, obj1);
connection.Execute(sql2, obj2);
transaction.Commit();
return 1;
}
catch (Exception)
{
transaction.Rollback();
return -1;
}
}
}
///
/// 获取一个数据模型实体类,param可以是SQL参数也可以是匿名对象
///
///
///
///
///
///
///
///
public T GetModel(string sql, object param = null, int? commandTimeout = null, CommandType? commandType = null)
{
using (var connection = GetConnection())
{
return connection.QueryFirstOrDefault(sql, param, null, commandTimeout, commandType);
}
}
public int GetExecuteScalar(string sql, object param = null, int? commandTimeout = null, CommandType? commandType = null)
{
using (var connection = GetConnection())
{
var result = connection.ExecuteScalar(sql, param, null, commandTimeout, commandType);
return result;
}
}
///
/// 获取符合条件的所有数据模型实体类列表,param可以是SQL参数也可以是匿名对象
///
///
///
///
///
///
///
///
///
public List GetModelList(string sql, object param = null, bool buffered = true, int? commandTimeout = null, CommandType? commandType = null) where T : class
{
using (var connection = GetConnection())
{
return connection.Query(sql, param, null, buffered, commandTimeout, commandType).AsList();
}
}
///
/// 获取符合条件的所有指定返回结果对象的列表(复合对象【如:1对多,1对1】),param可以是SQL参数也可以是匿名对象
///
///
///
///
///
///
///
///
///
///
///
///
public List GetMultModelList(string sql, Type[] types, Func