/// <summary> /// 异步获取分页数据(自定义sql语句) /// </summary> /// <typeparam name="TReturn">结果集数据类型/实体</typeparam> /// <param name="conn">数据库连接</param> /// <param name="pageIndex">分页索引</param> /// <param name="pageSize">分页大小</param> /// <param name="selectSql">查询语句</param> /// <param name="parms">参数</param> /// <param name="countSql">统计记录数语句,不传则自动根据查询语句生成</param> /// <returns></returns> public static async Task <PagerData <TReturn> > GetPagerDataAsync <TReturn>(this IDbConnection conn, int pageIndex, int pageSize, string selectSql, object parms = null, string countSql = null) { PagerData <TReturn> res = new PagerData <TReturn>(pageIndex, pageSize); if (string.IsNullOrEmpty(countSql)) { countSql = GetCountSql(selectSql); } res.RecordCount = await conn.ExecuteScalarAsync <int>(countSql, parms); if (res.RecordCount > 0) { if (pageIndex > res.PageCount) { pageIndex = res.PageCount; res.PageIndex = res.PageCount; } string strPagerSql = GetPagingSql(res.PageIndex, res.PageSize, selectSql); try { res.Data = await conn.QueryAsync <TReturn>(strPagerSql, parms); } catch (Exception ex) { throw; } } else { pageIndex = 1; res.PageIndex = 1; res.Data = new List <TReturn>(); } return(res); }
/// <summary> /// 获取分页数据(自定义sql语句) /// </summary> /// <typeparam name="TReturn">结果集数据类型/实体</typeparam> /// <param name="conn">数据库连接</param> /// <param name="pageIndex">分页索引</param> /// <param name="pageSize">分页大小</param> /// <param name="selectSql">查询语句</param> /// <param name="parms">参数</param> /// <param name="countSql">统计记录数语句,不传则自动根据查询语句生成</param> /// <returns></returns> public static PagerData <TReturn> GetPagerData <TReturn>(this IDbConnection conn, int pageIndex, int pageSize, string selectSql, object parms = null, string countSql = null) { PagerData <TReturn> res = new PagerData <TReturn>(pageIndex, pageSize); if (string.IsNullOrEmpty(countSql)) { countSql = GetCountSql(selectSql); } res.RecordCount = conn.ExecuteScalar <int>(countSql, parms); if (res.RecordCount > 0) { if (pageIndex > res.PageCount) { pageIndex = res.PageCount; res.PageIndex = res.PageCount; } string strPagerSql = GetPagingSql(res.PageIndex, res.PageSize, selectSql); res.Data = conn.Query <TReturn>(strPagerSql, parms); } else { pageIndex = 1; res.PageIndex = 1; res.Data = new List <TReturn>(); } return(res); }