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 中可以存储的是不带构造函数的类对象 否则不符合逻辑 为什么不符合逻辑?
随机推荐
- G - MPI Maelstrom
题目大意: BIT最近要取会他们的超级计算机,32处理器阿波罗奥德赛与分层通信子系统分布式共享内存的机器(听着很高端大气),瓦伦丁*麦基的顾问杰克*斯威特告诉她基准测试的新系统.(没有明白什么意思) ...
- javascript变量 数组 对象
一 变量 1.全局变量和局部变量 在JavaScript中同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var声明一次.这种变量类型不固定的语言称为动态语言,与之对应的静态语言,如 ...
- Dijkstra算法为什么权值不能为负
Dijkstra算法当中将节点分为已求得最短路径的集合(记为S)和未确定最短路径的个集合(记为U),归入S集合的节点的最短路径及其长度不再变更,如果边上的权值允许为负值,那么有可能出现当与S内某点(记 ...
- js实现键盘操作对div的移动或改变-------Day43
<爸爸去哪儿>的第二季据说要开播了额,有点小期待,不知道这一季的小宝贝们会有多萌,还会甜到心底吧, 哈哈,还记得那个风一样的女子呢,不知道她如今怎样了. 言归正传,继续今天的记录,实际上在 ...
- [Angular 2] Use Service use Typescript
When creating a service, need to inject the sercive into the bootstrap(): import {bootstrap, Compone ...
- Go语言学习笔记(一) : 搭建Windows下的Go开发环境
最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布, ...
- Codeforces Round #258 (Div. 2)[ABCD]
Codeforces Round #258 (Div. 2)[ABCD] ACM 题目地址:Codeforces Round #258 (Div. 2) A - Game With Sticks 题意 ...
- 警告"Local declaration of 'XXX' hides instance variable"原因
Local declaration of 'XXX' hides instance variable 是因为本地变量名跟函数变量名同名 ,.在命名上要注意.....
- 异步编程中使用帮助类来实现Thread.Start()的示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- .net之页面生面周期
# 事件或方法 功能 描述 1 Init 事件 页面初始化 页面生存周期中的第一个阶段是初始化.当 Init 事件发生时,在.aspx 源文件中静态声明的所有控件都已实例化并取其默认值.应该注意的是, ...