Dapper中使用存储分页。
#region 分页获取数据
/// <summary>
/// 分页获取数据
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="selectStr">获取列</param>
/// <param name="tableName">表名</param>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页数据量</param>
/// <param name="strWhere">查询条件</param>
/// <param name="key">关键字</param>
/// <param name="orderName">排序字段</param>
/// <param name="orderType">排序方式(非 0 值则降序)</param>
/// <param name="groupBy">分组字段</param>
/// <param name="RecordCount">输出查询的总数据量</param>
/// <returns></returns>
public List<T> GetUserAccess<T>(string selectStr, string tableName, int pageIndex, int pageSize, string strWhere, string key, string orderName, string orderType, string groupBy, ref int RecordCount)
{
var p = new DynamicParameters();
p.Add("@PageIndex", pageIndex);
p.Add("@PageSize", pageSize);
p.Add("@Order", orderName);
p.Add("@SelectStr", selectStr);
p.Add("@OrderType", orderType);
p.Add("@Groupby", groupBy);
p.Add("@key", key);
p.Add("@TableName", tableName);
p.Add("@WhereCondition", strWhere);
p.Add("@RecordCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@PageCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@error", "", dbType: DbType.String, direction: ParameterDirection.Output); List<T> ret = new List<T>();
using (var conn = DbFactory.GetDbConnection("MirrorMngr"))
{
ret = conn.Query<T>("Pro_CommonPager", p, commandType: CommandType.StoredProcedure).ToList();
//ret = GetCJFDData(ret);
RecordCount = p.Get<int>("RecordCount");
}
return ret;
}
#endregion
分页存储过程。
USE [MirrorMngr]
GO /****** Object: StoredProcedure [dbo].[Pro_CommonPager] Script Date: 09/16/2015 11:50:58 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author:
-- Create date: <-->
-- Description: <通用分页存储过程>
-- =============================================
CREATE PROCEDURE [dbo].[Pro_CommonPager]
(
@PageIndex int,--索引页
@PageSize int,--每页数量2
@TableName nvarchar(),--查询表名3
@Order nvarchar(),--排序的列4
@SelectStr nvarchar() = '*',--查询的列5
@WhereCondition Nvarchar(max)='',--查询条件6
@OrderType bit = , -- 设置排序类型, 非 值则降序
@Groupby NVarChar() = '' ,--分組
@RecordCount int=- output,--总行数
@PageCount int=- output,--总页数10
@error nvarchar()='' OUTPUT, --错误信息11
@key nvarchar()--关键字
--@retun nvarchar()='' output --错误信息11
)
AS
declare @strSQL nvarchar(max) -- 主语句
declare @strTmp nvarchar(max) -- 临时变量
declare @strOrder nvarchar(max) -- 排序类型
declare @groupByStr nvarchar()--分组变量
declare @whereStr nvarchar(Max)
declare @tableStr nvarchar(Max)
set @groupByStr=''
set @whereStr=''
set @tableStr='' if @OrderType !=
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @Order +' desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @Order +' asc'
end
if @Groupby <>''
begin
set @groupByStr=' group by '+@Groupby+' '
end
if @WhereCondition <> ''
begin
set @whereStr=' where '+@WhereCondition+' '
end set @tableStr=' '+@TableName + ' ' + @groupByStr + ' ' + @strOrder + ' ' if @groupByStr <> ''
begin
set @tableStr=' select [' + @key + '] from (select top ' + str((@PageIndex-)*@PageSize) + ' '+@SelectStr+' from '+@TableName +' '+ @whereStr + ' ' + @groupByStr + ' ' + @strOrder + ') strTable'
end
else
begin
set @tableStr=' select top ' + str((@PageIndex-)*@PageSize) + ' [' + @key + '] from '+@TableName + ' '+@whereStr+' ' + @strOrder + ' '
end set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' where ' + @key + ' not in ('+@tableStr+ ')'
+ ' ' + @groupByStr + ' ' + @strOrder if @WhereCondition <> ''
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' where ' + @key + ' NOT IN ('+@tableStr + ') and (' + @WhereCondition + ') ' + @groupByStr + ' ' + @strOrder if @PageIndex =
begin
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' ' + @whereStr + ' ' + @groupByStr + ' ' + @strOrder
end
exec (@strSQL)
if(@@error<>)
begin
set @error='分页数据出错﹗';
return;
end
--SET @retun= @strSQL;
--print @strSQL
--创建一个临时表用于快速计算行数
--create table #tmp ( counts int );---创建临时表
--取得总记录数 IF @Groupby <> ''
begin
SET @strTmp = 'SELECT @RecordCount=Count(*) FROM (select '+@Groupby+' from ' + @TableName +' '+@whereStr+' '+@groupByStr+' ) groupTable'
end
else
begin
SET @strTmp = 'SELECT @RecordCount=Count(*) FROM '+ @TableName +' '+@whereStr+' '
end EXEC SP_EXECUTESQL @strTmp,N'@RecordCount int output',@RecordCount output if(@@error<>)
begin
set @error='分页数据出错﹗';
--drop table #tmp;
return;
end --select @RecordCount=counts from #tmp
--SET @RecordCount = @@RowCount
-- 获取总页数
-- "CEILING"函数:取得不小于某数的最小整数 SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize) if(@@error<>)
begin
set @error='分页数据出错﹗';
--drop table #tmp;
end
return GO
Dapper中使用存储分页。的更多相关文章
- etcd学习(9)-etcd中的存储实现
etcd中的存储实现 前言 V3和V2版本的对比 MVCC treeIndex 原理 MVCC 更新 key MVCC 查询 key MVCC 删除 key 压缩 周期性压缩 版本号压缩 boltdb ...
- Android中数据存储(一)
国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...
- 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK
一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...
- 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ...
- SpringMVC结合easyUI中datagird实现分页
SpringMVC结合easyUI中datagird实现分页 DataGrid以表格形式展示数据,并提供了丰富的选择.排序.分组和编辑数据的功能支持.轻量级,单元格合并.多列标题.冻结列和页脚只是其中 ...
- 第2/24周 页_SQL Server 中数据存储的基本单位
上周通过探讨SQL Server如何执行一个查询奠定了基础.我也在那里提到页是8kb的缓存.今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节. 页是SQL Server的基础,在SQL ...
- float 在内存中如何存储的
float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进制数, ...
- <转载>浅谈C/C++的浮点数在内存中的存储方式
C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中 ...
- union 中可以存储的是不带构造函数的类对象
union 中可以存储的是不带构造函数的类对象 否则不符合逻辑 为什么不符合逻辑?
随机推荐
- bzoj 1059 [ZJOI2007]矩阵游戏(完美匹配)
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2993 Solved: 1451[Submit][Stat ...
- bzoj1227 [SDOI2009]虔诚的墓主人(组合公式+离散化+线段树)
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 803 Solved: 372[Submit][Statu ...
- bithrtree
#include "stdio.h" #include "stdlib.h" #define OK 1 #define ERROR 0 typedef char ...
- POJ 2029 Get Many Persimmon Trees(水题)
题意:在w*h(最大100*100)的棋盘上,有的格子中放有一棵树,有的没有.问s*t的小矩形,最多能含有多少棵树. 解法:最直接的想法,设d[x1][y1][x2][y2]表示选择以(x1, y1) ...
- HDU 4751 Divide Groups 2013 ACM/ICPC Asia Regional Nanjing Online
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 题目大意:判断一堆人能否分成两组,组内人都互相认识. 解题思路:如果两个人不是相互认识,该两人之 ...
- Jenkins 十: 访问控制
1. 打开“系统管理” –> “Configure Global Security”. 2. 选中“启用安全”. 3. 找到“安全域”,选中“Jenkins专有数据库”,选中“允许用户注册”. ...
- Java实现SSH模式加密原理及代码
一.SSH加密原理 SSH是先通过非对称加密告诉服务端一个对称加密口令,然后进行验证用户名和密码的时候,使用双方已经知道的加密口令进行加密和解密,见下图: 解释:SSH中为什么要使用非对称加密,又使用 ...
- Ubuntu中使用终端运行Hadoop程序
接上一篇<Ubuntu Kylin系统下安装Hadoop2.6.0> 通过上一篇,Hadoop伪分布式基本配好了. 下一步是运行一个MapReduce程序,以WordCount为例: 1. ...
- geektool--一款很geek的工具
2016/12/18 今天尝试一款很geek的工具 geektool 听名字就超级geek有木有 get it geektool website 从官网直接下载app,一键傻瓜式安装. use it ...
- [Javascript] Automating Releases with semantic-release
There are so many repeated steps when releasing a new version of a library. The tool semantic-releas ...