dapper通用分页方法
2024-10-21 02:51:20
/// <summary>
/// dapper通用分页方法
/// </summary>
/// <typeparam name="T">泛型集合实体类</typeparam>
/// <param name="conn">数据库连接池连接对象</param>
/// <param name="files">列</param>
/// <param name="tableName">表</param>
/// <param name="where">条件</param>
/// <param name="orderby">排序</param>
/// <param name="pageIndex">当前页</param>
/// <param name="pageSize">当前页显示条数</param>
/// <param name="total">结果集总数</param>
/// <returns></returns>
public static IEnumerable<T> GetPageList<T>(IDbConnection conn, string files, string tableName, string where, string orderby, int pageIndex, int pageSize, out int total)
{
int skip = ;
if (pageIndex > )
{
skip = (pageIndex - 1) * pageSize + 1;
}
StringBuilder sb = new StringBuilder();
sb.AppendFormat("SELECT COUNT(1) FROM {0} where {1};", tableName, where);
sb.AppendFormat(@"SELECT {0}
FROM(SELECT ROW_NUMBER() OVER(ORDER BY {3}) AS RowNum,{0}
FROM {1}
WHERE {2}
) AS result
WHERE RowNum >= {4} AND RowNum <= {5}
ORDER BY {3}", files, tableName, where, orderby, skip, pageIndex * pageSize);
using (var reader = conn.QueryMultiple(sb.ToString()))
{
total = reader.ReadFirst<int>();
return reader.Read<T>();
}
}
PS:网上找方法费劲,把找好的记录在自己的博客是个好习惯。
最新文章
- MVC5中EF6 Code First启动慢及间隙变慢优化的实践经验(转)
- Facade设计模式
- 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机
- WPF:在ControlTemplate中使用TemplateBinding
- Qt QDebug等重定向到文件中
- ";The Application was unable to start correctly (0xc000007b). Click OK to close the application";
- 10分钟学会JAVA注解(annotation)
- 怎样在VS2010-2017中使用LightningChart绘图控件?
- login&#160;shell&#160;和&#160;non-login&#160;shell&#160;的区别
- [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
- 2.git使用之git fetch和git push的区别
- 【转】个人总结-网络安全学习和CTF必不可少的一些网站
- sqlserver字符串合并(merge)方法汇总
- 解决Tomcat加载时报APR错的问题
- css之选择器的认识
- cocos2d-js中怎么删除一个精灵
- LightOJ - 1138 (二分+阶乘分解)
- 搭建Hadoop环境(二)
- mysql指定id默认第一
- HDU 4750 Count The Pairs (离线并查集)