| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Configuration;
- using System.Threading.Tasks;
- using Dapper;
- using MySql.Data.MySqlClient;
- using Winsoft.GOV.Framework.Model;
- namespace Winsoft.GOV.Framework.Provider
- {
- public abstract class BaseProvider<T>
- {
- #region instance
- protected County _county;
- private static object lockObj = new object();
- protected static void CreateInstance<K>(ref K singleInstance) where K : BaseProvider<T>, new()
- {
- if (singleInstance == null)
- {
- lock (lockObj)
- {
- if (singleInstance == null)
- {
- singleInstance = new K();
- }
- }
- }
- }
- #endregion
- #region connection
- protected string connectionString;
- public BaseProvider(County county)
- {
- _county = county;
- connectionString = "gov_" + _county.ToString();
- }
- /// <summary>
- /// </summary>
- /// <param name="connectionStr"></param>
- /// <returns></returns>
- protected IDbConnection GetDbConnection()
- {
- string connectionStr = ConfigurationManager.ConnectionStrings[connectionString].ConnectionString;
- var connection = new MySqlConnection
- {
- ConnectionString = connectionStr
- };
- connection.Open();
- return connection;
- }
- protected string BuildTotalSQL(string sql)
- {
- var selectCount = new StringBuilder("SELECT COUNT(1) from (");
- return
- selectCount.Append(sql + ") as t")
- .ToString();
- }
- /// <summary>
- /// </summary>
- /// <param name="total"></param>
- /// <param name="sql"></param>
- /// <param name="pageIndex">内部索引从0开始,页码从1开始</param>
- /// <code>
- /// if (pageIndex - 1 >= 0)
- /// {
- /// pageIndex = pageIndex - 1;
- /// }
- /// </code>
- /// <param name="pageSize"></param>
- /// <param name="param"></param>
- /// <param name="areaCode"></param>
- /// <returns></returns>
- protected PagedResult<T> GetPagedList(string sql, int pageIndex, int pageSize, object param = null)
- {
- long total = 0;
- if (pageIndex < 0)
- {
- pageIndex = 0;
- }
- if (pageSize <= 0)
- {
- pageSize = 20;
- }
- using (IDbConnection connection = GetDbConnection())
- {
- string totalSql = BuildTotalSQL(sql);
- total = connection.Query<long>(totalSql, param).FirstOrDefault();
- var list = connection.Query<T>(String.Format(sql + " limit {0},{1}", pageIndex * pageSize, pageSize), param);
- return new PagedResult<T>()
- {
- Data = list,
- Index = pageIndex,
- Size = pageSize,
- Total = total
- };
- }
- }
- protected IEnumerable<T> GetItemList(string sql, int itemIndex, int pageSize, object param = null)
- {
- if (itemIndex < 0)
- {
- itemIndex = 0;
- }
- if (pageSize <= 0)
- {
- pageSize = 20;
- }
- using (IDbConnection connection = GetDbConnection())
- {
- var list = connection.Query<T>(String.Format(sql + " limit {0},{1}", itemIndex, pageSize), param);
- return list;
- }
- }
- #endregion
- }
- }
|