/// <summary> /// 获取数据 /// </summary> /// <param name="db"></param> /// <param name="query"></param> /// <param name="pageNum"></param> /// <returns></returns> public DataTable GetDataTable(string db, string query, int pageNum) { if (!PageConfig.isMemory) { return(null); } Dictionary <string, PageSQL> pageSQL = null; PageSQL page = null; if (dicPageQuery.TryGetValue(db, out pageSQL)) { if (pageSQL.TryGetValue(query, out page)) { var dt = queryCache.GetDataTable(db, page.ID, pageNum); if (dt == null && PageConfig.IsCacheFile) { return((DataTable)GetFile(db, page.ID, pageNum, true)); } return(dt); } } else { Dictionary <string, DBQueryCache> cur = null; DBQueryCache cache = null; if (dicSQL.TryGetValue(db, out cur)) { if (cur.TryGetValue(query, out cache)) { return(cache.GetDataTable(pageNum)); } } } return(null); }
/// <summary> /// 获取model /// </summary> /// <param name="db"></param> /// <param name="query"></param> /// <param name="pageNum"></param> /// <returns></returns> public List <object> GetListModel(string db, string query, int pageNum) { if (!PageConfig.isMemory) { return(null); } Dictionary <string, PageSQL> pageSQL = null; PageSQL page = null; if (dicPageQuery.TryGetValue(db, out pageSQL)) { if (pageSQL.TryGetValue(query, out page)) { var lst = queryCache.GetListModel(db, page.ID, pageNum); if (lst == null && PageConfig.IsCacheFile) { return((List <object>)GetFile(db, page.ID, pageNum, true)); } return(lst); } } else { Dictionary <string, DBQueryCache> cur = null; DBQueryCache cache = null; if (dicSQL.TryGetValue(db, out cur)) { if (cur.TryGetValue(query, out cache)) { return(cache.GetListModel(pageNum)); } } } return(null); }
/// <summary> /// 获取SQL语句 /// </summary> /// <param name="db"></param> /// <param name="queryName"></param> /// <param name="pageNum"></param> /// <param name="min"></param> /// <param name="max"></param> /// <returns></returns> public string GetPageSql(string db, string queryName, int pageNum, int min = -1, int max = -1) { Dictionary <string, PageSQL> pageSQL = null; PageSQL page = null; if (dicPageQuery.TryGetValue(db, out pageSQL)) { if (pageSQL.TryGetValue(queryName, out page)) { string sql = page.SQL; if (pageNum > 1) { sql = sql.Replace("@Min", ((pageNum - 1) * PageConfig.PageSize).ToString()); sql = sql.Replace("@Max", (pageNum * PageConfig.PageSize).ToString()); return(sql); } else { sql = sql.Replace("@Min", min.ToString()); sql = sql.Replace("@Max", max.ToString()); return(sql); } } } return(null); }
/// <summary> /// 缓存数据 /// </summary> /// <param name="db">数据库名称(配置名称)</param> /// <param name="queryName">业务查询名称</param> /// <param name="pageNum">页号</param> /// <param name="data">数据</param> public void Add(string db, string queryName, int pageNum, object data) { if (!PageConfig.isMemory) { return; } Dictionary <string, PageSQL> pageSQL = null; PageSQL page = null; long id = -1; if (dicPageQuery.TryGetValue(db, out pageSQL)) { if (pageSQL.TryGetValue(queryName, out page)) { id = page.ID; } } if (id == -1) { //说明没有配置,则是SQL Dictionary <string, DBQueryCache> cur = null; DBQueryCache cache = null; if (dicSQL.TryGetValue(db, out cur)) { if (cur.TryGetValue(queryName, out cache)) { if (data is DataTable) { cache.Add(pageNum, (DataTable)data); } else { cache.Add(pageNum, (List <object>)data); } } else { cache = new DBQueryCache(PageConfig.PageCacheNum); cur[queryName] = cache; if (data is DataTable) { cache.Add(pageNum, (DataTable)data); } else { cache.Add(pageNum, (List <object>)data); } } } else { cache = new DBQueryCache(PageConfig.PageCacheNum); if (data is DataTable) { cache.Add(pageNum, (DataTable)data); } else { cache.Add(pageNum, (List <object>)data); } cur = new Dictionary <string, DBQueryCache>(); cur[queryName] = cache; dicSQL[db] = cur; } } else { object oldData = null; bool isModel = false; if (data is DataTable) { oldData = queryCache.Add(db, id, pageNum, (DataTable)data); } else { oldData = queryCache.Add(db, id, pageNum, (List <object>)data); isModel = true; } if (PageConfig.IsCacheFile && oldData != null) { PutFile(db, id, pageNum, oldData, isModel); SaveFile(); } Validate(); } }