DataManagerImp.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. using SqlSugar;
  2. using System;
  3. using System.Threading.Tasks;
  4. using System.Collections.Generic;
  5. using SHJX.Service.Common.ReadXML;
  6. namespace SHJX.Service.Dao
  7. {
  8. public class DataManagerImp
  9. {
  10. /// <summary>
  11. /// 数据库连接
  12. /// </summary>
  13. protected SqlSugarClient Db;
  14. /// <summary>
  15. /// 配置文件读取
  16. /// </summary>
  17. private ReadConfigUtil _config;
  18. /// <summary>
  19. /// 初始化数据
  20. /// </summary>
  21. protected void InitData(ReadConfigUtil config)
  22. {
  23. _config = config;
  24. GetSqlSugarClient();
  25. }
  26. /// <summary>
  27. /// 创建SqlSugarClient
  28. /// </summary>
  29. /// <returns>SqlSugarClient连接对象</returns>
  30. private void GetSqlSugarClient()
  31. {
  32. //创建数据库对象
  33. Db = new SqlSugarClient(new ConnectionConfig()
  34. {
  35. ConnectionString = _config.ConnStr, //连接符字串
  36. DbType = DbType.MySql, //数据库类型
  37. IsAutoCloseConnection = true,
  38. InitKeyType = InitKeyType.Attribute //从特性读取主键自增信息
  39. });
  40. /* //添加Sql打印事件(可删掉)
  41. Db.Aop.OnLogExecuting = (sql, pars) => logger.WarnFormat("{0} {1}",
  42. sql,Db.Utilities.SerializeObject(pars.ToDictionary(item => item.ParameterName,item => item.Value)));*/
  43. }
  44. /// <summary>
  45. /// 查询全部数据
  46. /// </summary>
  47. /// <typeparam name="T"></typeparam>
  48. /// <returns></returns>
  49. public IEnumerable<T> Query<T>() where T : class =>
  50. Db.Queryable<T>().ToList();
  51. /// <summary>
  52. /// 根据条件表达式删除
  53. /// </summary>
  54. /// <typeparam name="T"></typeparam>
  55. /// <param name="func"></param>
  56. /// <returns></returns>
  57. public int Delete<T>(Func<T> func) where T : class, new() =>
  58. Db.Deleteable<T>().Where(func.Invoke()).ExecuteCommand();
  59. /// <summary>
  60. /// 根据实体删除
  61. /// </summary>
  62. /// <typeparam name="T"></typeparam>
  63. /// <param name="t"></param>
  64. /// <returns></returns>
  65. public int Delete<T>(T t) where T : class, new() =>
  66. Db.Deleteable<T>().Where(t).ExecuteCommand();
  67. /// <summary>
  68. /// 批量删除
  69. /// </summary>
  70. /// <typeparam name="T"></typeparam>
  71. /// <param name="lists"></param>
  72. /// <returns></returns>
  73. public int Delete<T>(List<T> lists) where T : class, new() =>
  74. Db.Deleteable<T>().Where(lists).ExecuteCommand();
  75. /// <summary>
  76. /// 根据主键删除
  77. /// </summary>
  78. /// <typeparam name="T"></typeparam>
  79. /// <param name="id"></param>
  80. /// <returns></returns>
  81. public int Delete<T>(int id) where T : class, new() =>
  82. Db.Deleteable<T>().In(id).ExecuteCommand();
  83. /// <summary>
  84. /// 根据条件表达式删除
  85. /// </summary>
  86. /// <typeparam name="T"></typeparam>
  87. /// <param name="func"></param>
  88. /// <returns></returns>
  89. public Task<int> DeleteAsync<T>(Func<T> func) where T : class, new() =>
  90. Db.Deleteable<T>().Where(func.Invoke()).ExecuteCommandAsync();
  91. /// <summary>
  92. /// 根据实体删除
  93. /// </summary>
  94. /// <typeparam name="T"></typeparam>
  95. /// <param name="t"></param>
  96. /// <returns></returns>
  97. public Task<int> DeleteAsync<T>(T t) where T : class, new() =>
  98. Db.Deleteable<T>().Where(t).ExecuteCommandAsync();
  99. /// <summary>
  100. /// 删除集合
  101. /// </summary>
  102. /// <typeparam name="T"></typeparam>
  103. /// <param name="lists"></param>
  104. /// <returns></returns>
  105. public Task<int> DeleteAsync<T>(List<T> lists) where T : class, new() =>
  106. Db.Deleteable<T>().Where(lists).ExecuteCommandAsync();
  107. /// <summary>
  108. /// 根据主键删除
  109. /// </summary>
  110. /// <typeparam name="T"></typeparam>
  111. /// <param name="id"></param>
  112. /// <returns></returns>
  113. public Task<int> DeleteAsync<T>(int id) where T : class, new() =>
  114. Db.Deleteable<T>().In(id).ExecuteCommandAsync();
  115. /// <summary>
  116. /// 根据实体插入
  117. /// </summary>
  118. /// <typeparam name="T"></typeparam>
  119. /// <param name="t"></param>
  120. /// <returns></returns>
  121. public int Insert<T>(T t) where T : class, new() =>
  122. Db.Insertable(t).ExecuteCommand();
  123. /// <summary>
  124. /// 批量插入
  125. /// </summary>
  126. /// <typeparam name="T"></typeparam>
  127. /// <param name="t"></param>
  128. /// <returns></returns>
  129. public int Insert<T>(List<T> t) where T : class, new() =>
  130. Db.Insertable(t).ExecuteCommand();
  131. /// <summary>
  132. /// 异步插入
  133. /// </summary>
  134. /// <typeparam name="T"></typeparam>
  135. /// <param name="t"></param>
  136. /// <returns></returns>
  137. public Task<int> InsertAsync<T>(T t) where T : class, new() =>
  138. Db.Insertable(t).ExecuteCommandAsync();
  139. /// <summary>
  140. /// 单条数据更新
  141. /// </summary>
  142. /// <typeparam name="T"></typeparam>
  143. /// <param name="t"></param>
  144. /// <returns></returns>
  145. public int Update<T>(T t) where T : class, new() =>
  146. Db.Updateable(t).ExecuteCommand();
  147. //IUpdateExpressions<T> Update<T>() where T : class;
  148. /// <summary>
  149. /// 多条数据同时更新
  150. /// </summary>
  151. /// <typeparam name="T"></typeparam>
  152. /// <param name="lists"></param>
  153. /// <returns></returns>
  154. public int Update<T>(List<T> lists) where T : class, new() =>
  155. Db.Updateable(lists).ExecuteCommand();
  156. /// <summary>
  157. ///
  158. /// </summary>
  159. /// <typeparam name="T"></typeparam>
  160. /// <param name="t"></param>
  161. /// <param name="isUpdateParams">true:只更新指定字段 false:不更新指定字段</param>
  162. /// <param name="columns"></param>
  163. /// <returns></returns>
  164. public int Update<T>(T t, bool isUpdateParams, params string[] columns) where T : class, new() =>
  165. isUpdateParams
  166. ? Db.Updateable(t).UpdateColumns(columns).ExecuteCommand()
  167. : Db.Updateable(t).IgnoreColumns(columns).ExecuteCommand();
  168. /// <summary>
  169. /// 单条数据更新
  170. /// </summary>
  171. /// <typeparam name="T"></typeparam>
  172. /// <param name="t"></param>
  173. /// <returns></returns>
  174. public Task<int> UpdateAsycn<T>(T t) where T : class, new() =>
  175. Db.Updateable(t).ExecuteCommandAsync();
  176. /// <summary>
  177. /// 多条数据同时更新
  178. /// </summary>
  179. /// <typeparam name="T"></typeparam>
  180. /// <param name="lists"></param>
  181. /// <returns></returns>
  182. public Task<int> UpdateAsycn<T>(List<T> lists) where T : class, new() =>
  183. Db.Updateable(lists).ExecuteCommandAsync();
  184. /// <summary>
  185. ///
  186. /// </summary>
  187. /// <typeparam name="T"></typeparam>
  188. /// <param name="t"></param>
  189. /// <param name="isUpdateParams">true:只更新指定字段 false:不更新指定字段</param>
  190. /// <param name="columns"></param>
  191. /// <returns></returns>
  192. public Task<int> UpdateAsycn<T>(T t, bool isUpdateParams, params string[] columns) where T : class, new() =>
  193. isUpdateParams
  194. ? Db.Updateable(t).UpdateColumns(columns).ExecuteCommandAsync()
  195. : Db.Updateable(t).IgnoreColumns(columns).ExecuteCommandAsync();
  196. }
  197. }