需导入Sqlsugar命名空间进行使用,与数据库进行交互保证类名和字段的一致性
public class DBContext<T> where T : class, new()
{
/// <summary>
/// 数据库实例
/// </summary>
private SqlSugarClient db;
private static DBContext<T> instance = null;
private static string ConnectionKey;
public static DBContext<T> GetInstance()
{
if (instance == null)
instance = new DBContext<T>();
return instance;
}
//数据库连接字符串
public static DBContext<T> OpenDB()
{
DBContext<T> dBContext = new DBContext<T>();
dBContext.db = new SqlSugarClient(
new ConnectionConfig()
{
ConnectionString = ConfigHelper.GetValueByKey("ConnectionString"),
DbType = SqlSugar.DbType.MySql, //设置数据库类型
IsAutoCloseConnection = true, //自动释放数据务,如果存在事务,在事务结束后释放
InitKeyType = InitKeyType.Attribute, //从实体特性中读取主键自增列信息
});
return dBContext;
}
public DBContext()
{
db = new SqlSugarClient(
new ConnectionConfig()
{
ConnectionString = ConfigHelper.GetValueByKey("ConnectionString"),
DbType = SqlSugar.DbType.MySql, //设置数据库类型
IsAutoCloseConnection = true, //自动释放数据务,如果存在事务,在事务结束后释放
InitKeyType = InitKeyType.Attribute, //从实体特性中读取主键自增列信息
});
}
public void Dispose()
{
if (db != null)
{
db.Dispose();
}
}
public SimpleClient<T> CurrentDb => new SimpleClient<T>(db);
/// <summary>
/// 根据sql脚本查询
/// </summary>
/// <returns></returns>
public virtual DataTable GetBySql(string sqlStr)
{
return db.Ado.GetDataTable(sqlStr);
}
/// <summary>
/// 获取所有
/// </summary>
/// <returns></returns>
public virtual List<T> GetList()
{
return CurrentDb.GetList();
}
/// <summary>
/// 根据表达式查询
/// </summary>
/// <returns></returns>
public virtual List<T> GetList(Expression<Func<T, bool>> whereExpression)
{
return CurrentDb.GetList(whereExpression);
}
/// <summary>
/// 根据表达式查询分页
/// </summary>
/// <returns></returns>
public virtual List<T> GetPageList(Expression<Func<T, bool>> whereExpression, PageModel pageModel)
{
return CurrentDb.GetPageList(whereExpression, pageModel);
}
/// <summary>
/// 根据表达式查询分页并排序
/// </summary>
/// <param name="whereExpression">it</param>
/// <param name="pageModel"></param>
/// <param name="orderByExpression">it=>it.id或者it=>new{it.id,it.name}</param>
/// <param name="orderByType">OrderByType.Desc</param>
/// <returns></returns>
public virtual List<T> GetPageList(Expression<Func<T, bool>> whereExpression, PageModel pageModel, Expression<Func<T, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc)
{
return CurrentDb.GetPageList(whereExpression, pageModel, orderByExpression, orderByType);
}
/// <summary>
/// 根据主键查询
/// </summary>
/// <returns></returns>
public virtual T GetById(dynamic id)
{
return CurrentDb.GetById(id);
}
/// <summary>
/// 根据主键查询
/// </summary>
/// <returns></returns>
public virtual T GetModel(Expression<Func<T, bool>> whereExpression)
{
var list = CurrentDb.GetList(whereExpression);
if (list != null && list.Count > 0)
return list[0];
else
return null;
}
/// <summary>
/// 根据主键删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Delete(dynamic id)
{
if (string.IsNullOrEmpty(Convert.ToString(id)))
{
Console.WriteLine(string.Format("要删除的主键id不能为空值!"));
}
return CurrentDb.DeleteById(id);
}
/// <summary>
/// 根据实体删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Delete(T data)
{
if (data == null)
{
Console.WriteLine(string.Format("要删除的实体对象不能为空值!"));
}
return CurrentDb.Delete(data);
}
/// <summary>
/// 根据主键删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Delete(dynamic[] ids)
{
if (ids.Count() <= 0)
{
Console.WriteLine(string.Format("要删除的主键ids不能为空值!"));
}
return CurrentDb.AsDeleteable().In(ids).ExecuteCommand() > 0;
}
/// <summary>
/// 根据表达式删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Delete(Expression<Func<T, bool>> whereExpression)
{
return CurrentDb.Delete(whereExpression);
}
/// <summary>
/// 根据实体更新,实体需要有主键
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Update(T obj)
{
if (obj == null)
{
Console.WriteLine(string.Format("要更新的实体不能为空,必须带上主键!"));
}
return CurrentDb.Update(obj);
}
/// <summary>
///批量更新
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Update(List<T> objs)
{
if (objs.Count <= 0)
{
Console.WriteLine(string.Format("要批量更新的实体不能为空,必须带上主键!"));
}
return CurrentDb.UpdateRange(objs);
}
/// <summary>
/// 插入
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Insert(T obj)
{
return CurrentDb.Insert(obj);
}
/// <summary>
/// 批量
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual bool Insert(List<T> objs)
{
return CurrentDb.InsertRange(objs);
}
这个类库展示了如何使用SqlSugar客户端与MySQL数据库进行交互,包括实例化、连接配置、增删改查等基本操作,确保类名和字段与数据库表一致。
1万+

被折叠的 条评论
为什么被折叠?



