简化的通用分页代码封装
2009-07-22 11:55
435 查看
准备工作:
支持DISTINCT的通用分页存储过程(SQL2005)
幸运草的EntityBuilder<Entity>(见该文中1楼的回复)
Enterprise Library
在以上基础上,写了个通用的分页辅助类:
调用方法,以使用CodeSmith的代码模板生成的DAL代码为例:
这样,在实现具体的分页功能时,代码就很简洁了。
支持DISTINCT的通用分页存储过程(SQL2005)
幸运草的EntityBuilder<Entity>(见该文中1楼的回复)
Enterprise Library
在以上基础上,写了个通用的分页辅助类:
/// <summary> /// 数据库分页操作辅助类 /// </summary> public sealed class PaginationHelper<Entity> { /// <summary> /// 实例化 /// </summary> /// <returns></returns> public static PaginationHelper<Entity> Instance() { return new PaginationHelper<Entity>(); } /// <summary> /// 取当前页,使用存储过程p_CommonPagination /// </summary> /// <param name="Table"></param> /// <param name="Fields"></param> /// <param name="Where"></param> /// <param name="Order"></param> /// <param name="PageIndex"></param> /// <param name="PageSize"></param> /// <param name="UseDistinct"></param> /// <param name="Action">0表示返回查询结果和总数,1表示只返回查询结果,2表示只返回总数</param> /// <param name="TotalCount"></param> /// <returns>List>Entity<</returns> public List<Entity> GetCurrentPage4List(string Table, string Fields, string Where, string Order, int PageIndex, int PageSize, bool UseDistinct, int Action, out int TotalCount) { List<Entity> list = new List<Entity>(); Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetStoredProcCommand("p_CommonPagination"); db.AddInParameter(cmd, "@Fields", DbType.String, Fields); db.AddInParameter(cmd, "@Table", DbType.String, Table); db.AddInParameter(cmd, "@Where", DbType.String, Where); db.AddInParameter(cmd, "@Order", DbType.String, Order); db.AddInParameter(cmd, "@PageIndex", DbType.Int32, PageIndex); db.AddInParameter(cmd, "@PageSize", DbType.Int32, PageSize); db.AddInParameter(cmd, "@UseDistinct", DbType.Boolean, UseDistinct); db.AddInParameter(cmd, "@Action", DbType.Int32, Action); db.AddOutParameter(cmd, "@TotalCount", DbType.Int32, 4); using (IDataReader dr = db.ExecuteReader(cmd)) { while (dr.Read()) { Entity entity = EntityBuilder<Entity>.CreateBuilder(dr).Build(dr); list.Add(entity); } } object result = db.GetParameterValue(cmd, "@TotalCount"); if (result == null) TotalCount = 0; else int.TryParse(result.ToString(), out TotalCount); return list; } }
调用方法,以使用CodeSmith的代码模板生成的DAL代码为例:
/// <summary> /// 获取当页User /// </summary> /// <param name="where"></param> /// <param name="orderBy"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="total"></param> /// <returns>List>User<</returns> public static List<User> GetPagedUser(string where, string orderBy, int pageIndex, int pageSize, out int total) { return PaginationHelper<User>.Instance() .GetCurrentPage4List("[dbo].[Ts_User]", "*", where, orderBy, pageIndex, pageSize, false, 0, out total); }
这样,在实现具体的分页功能时,代码就很简洁了。
相关文章推荐
- 用@Html.EditorFor在MVC3中封装带表单(Form)提交的分页控件(通用代码)
- Android中ListView、GridView的通用适配封装简化代码
- Android UI 之 我的页面 圆形图片+通用item封装(简化代码量)
- 数据显示控件的通用分页代码
- YbSoftwareFactory 代码生成插件【十四】:通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页
- 大话分页(补充)——Threadlocal封装offSet和pageSize简化分页工具类
- 通用高效分页存储过程代码
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- php分页封装(10行代码搞定分页)
- 通用高效分页存储过程代码
- 通用高效分页存储过程代码
- 模板模式抽取Struts2模型驱动及分页重复代码,简化开发
- Reactjs实现通用分页组件的实例代码
- 【log4j2】简化封装(代码案例)
- ASP通用分页代码
- 使用封装好的分页代码,没有信息输出,也不报错,这是什么情况
- asp 漂亮通用数字分页代码
- 通用高效分页存储过程代码
- 基于Java实现的简单且通用的分页实现封装 <Pagiation>
- Asp.net 通用万级数据分页代码[修正下载地址]