C#Dappera帮助类
internal class DapperHelper
{
//使用单例模式
private static DapperHelper _Singleton = null;
static SqlSugar.DbType dbtype = SqlSugar.DbType.SqlServer;
static string ConnectionString = string.Empty;
private static object Singleton_Lock = new object();
public static DapperHelper Init(SqlSugar.DbType dbtype = SqlSugar.DbType.SqlServer)
{
if (_Singleton == null) //双if +lock
{
lock (Singleton_Lock)
{
if (_Singleton == null)
{
//创建对象
_Singleton = new DapperHelper(dbtype);
}
}
}
return _Singleton;
}
public DapperHelper(SqlSugar.DbType dbtype)
{
if (dbtype == SqlSugar.DbType.SqlServer)
{
DapperHelper.ConnectionString = ConnTools.init().GetSqlServerConn();
}
else if (dbtype == SqlSugar.DbType.Oracle)
{
DapperHelper.ConnectionString = ConnTools.init().GetOracleConn();
}
DapperHelper.dbtype = dbtype;
}
///
/// 添加.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入实体类型.
/// int.
public int Add(string sql, T t)
where T : class
{
return Add(sql, t,ConnectionString);
}
///
/// 添加.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入实体类型.
/// 链接字符串.
/// int.
public int Add(string sql, T t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Execute(sql, t);
}
}
///
/// 批量添加.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// int.
public int Add(string sql, List t)
where T : class
{
return Add(sql, t, ConnectionString);
}
///
/// 批量添加.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// 链接字符串.
/// int.
public int Add(string sql, List t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Execute(sql, t);
}
}
///
/// 删除.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入实体类型.
/// 链接字符串.
/// int.
public int Delete(string sql, T t)
where T : class
{
return Delete(sql, t, ConnectionString)
; }
///
/// 删除.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入实体类型.
/// 链接字符串.
/// int.
public int Delete(string sql, T t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Execute(sql, t);
}
}
///
/// 批量删除.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// int.
public int Delete(string sql, List t)
where T : class
{
return Delete(sql, t, ConnectionString);
}
///
/// 批量删除.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// 链接字符串.
/// int.
public int Delete(string sql, List t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Execute(sql, t);
}
}
///
/// 修改.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入实体类型.
/// 链接字符串.
/// int.
public int Update(string sql, T t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Execute(sql, t);
}
}
///
/// 批量修改.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// int.
public int Update(string sql, List t)
where T : class
{
return Update(sql, t, ConnectionString);
}
///
/// 批量修改.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// 链接字符串.
/// int.
public int Update(string sql, List t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Execute(sql, t);
}
}
///
/// 查询.
///
/// 实体类型.
/// 传入sql执行语句.
/// 泛型类.
public List Query(string sql)
where T : class
{
return Query(sql, ConnectionString);
}
///
/// 查询.
///
/// 实体类型.
/// 传入sql执行语句.
/// 链接字符串.
/// 泛型类.
public List Query(string sql, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Query(sql).ToList();
}
}
///
/// 查询指定数据.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// 类.
public T Query(string sql, T t)
where T : class
{
return Query(sql, t, ConnectionString);
}
///
/// 查询指定数据.
///
/// 实体类型.
/// 传入sql执行语句.
/// 传入泛型类.
/// 链接字符串.
/// 类.
public T Query(string sql, T t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Query(sql, t).SingleOrDefault();
}
}
///
/// 查询多个数据
///
///
///
///
///
public List QueryList(string sql, T t)
where T : class
{
return QueryList(sql, t, ConnectionString);
}
///
/// 查询多条数据
///
///
/// 查询语句
/// 模型
/// 数据库连接字符串
///
public List QueryList(string sql, T t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Query(sql, t).ToList();
}
}
///
/// 查询数据返回datatable
///
///
///
///
///
public DataTable QueryDataTable(string sql, T t)
where T : class
{
return QueryDataTable(sql, t, ConnectionString);
}
public DataTable QueryDataTable(string sql, T t, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Query(sql, t).SingleOrDefault();
}
} ///
/// 查询的in操作.
///
/// 实体类型.
/// 传入sql执行语句.
/// 泛型类.
public List Query(string sql, int[] ids)
where T : class
{
return Query(sql, ids, ConnectionString)
; }
///
/// 查询的in操作.
///
/// 实体类型.
/// 传入sql执行语句.
/// 链接字符串.
/// 泛型类.
public List Query(string sql, int[] ids, string ConnectionString)
where T : class
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
return connection.Query(sql, new { ids }).ToList();
}
}
///
/// 多语句操作.
///
/// 实体类型.
/// 传入sql执行语句.
/// 链接字符串.
public void QueryMultiple(string sql, T t)
{
return QueryMultiple(sql, t, ConnectionString);
}
///
/// 多语句操作.
///
/// 实体类型.
/// 传入sql执行语句.
/// 链接字符串.
public void QueryMultiple(string sql, T t, string ConnectionString)
{
using (IDbConnection connection = new SqlConnection(ConnectionString))
{
var multiReader = connection.QueryMultiple(sql);
var userInfo = multiReader.Read();
multiReader.Dispose();
}
}
}
}
代码中用到的枚举
public enum DbType
{
MySql = 0,
SqlServer = 1,
Sqlite = 2,
Oracle = 3,
PostgreSQL = 4,
Dm = 5,
Kdbndp = 6,
Oscar = 7,
MySqlConnector = 8,
Access = 9,
Custom = 900
}