微软企业库mysql分页存储_微软企业库调用Oracle分页存储过程

这篇博客介绍了如何在Oracle数据库中使用存储过程进行分页查询。它定义了一个名为pkg_tableType的包,包含一个名为FY的过程,该过程接受表名、字段名、排序字段、条件语句、每页记录数和当前页数作为参数,返回总记录数和数据集。在DAL层,通过调用这个存储过程实现了分页功能,并在页面层展示数据。
摘要由CSDN通过智能技术生成

存储过程:

CREATE OR REPLACE PACKAGE pkg_tableType

IS

procedure FY

(

TableName varchar2, -- 表名

getFields varchar2, -- 字段名(全部字段为*)

OrderField varchar2, -- 排序字段(必须!支持多字段)

whereCondition varchar2, -- 条件语句(不用加where)

pageSize int, -- 每页多少条记录

pageIndex int, -- 指定当前为第几页

recordCount out int , --返回总记录条数

cur_out out sys_refcursor --返回的是数据集 );

END; -------------创建包体--------------------

CREATE OR REPLACE PACKAGE body pkg_tableType

IS

procedure FY(

TableName varchar2,-- 表名

getFields varchar2,-- 字段名(全部字段为*)

OrderField varchar2, -- 排序字段(必须!支持多字段)

whereCondition varchar2, -- 条件语句(不用加where)

pageSize int, -- 每页多少条记录

pageIndex int, -- 指定当前为第几页

recordCount out int , --返回总记录条数

cur_out out sys_refcursor --返回的是数据集

) i

s

v_sql varchar2(500);

StartRecord int;

EndRecord int;

sPageIndex int;

pageCount int;

begin

if whereCondition is null then

v_sql := 'select count(*) from ' || TableName;

else   v_sql := 'select count(*) from ' || TableName ||' where ' || whereCondition;

end if;

execute immediate v_sql into recordCount; --计算总记录数

pageCount:=CEIL((recordCount||0.0)/PageSize); --计算总页数

sPageIndex:=pageIndex;   --处理开始点和结束点

if(pageIndex<=0)then   sPageIndex:=1;

elsif(pageIndex>pageCount)then   sPageIndex:=pageCount;

end if;

StartRecord := (sPageIndex-1)*PageSize + 1;

EndRecord := StartRecord +pageSize - 1;   --合成sql

if whereCondition is not null then

v_sql:='select * from (select row_number() over (order by '||OrderField||' ) as rn,d.* from '     ||TableName||' d where '||+whereCondition||') where rn>'||StartRecord||' and rn<='||EndRecord;   else     v_sql:='select * from (select row_number() over (order by '||OrderField||' ) as rn,d.* from '     ||TableName||' d) where rn>'||StartRecord||' and rn<='||EndRecord;   end if;     open cur_out for v_sql;   end FY; END ;

DAL层业务逻辑(调用存储过程)

/// 分页存储过程

///

/// 表名

/// 字段名(全部字段为*)

/// 排序字段(必须!支持多字段)

/// 条件语句(不用加where)

/// 每页多少条记录

/// 指定当前为第几页

///

public static DataSet GetProductsByPagerProc(string TableName, string getFields, string OrderField, string whereCondition, int pageSize, int pageIndex, out int recordCount)

{

Database db = DBHelper.CreateDataBase();

StringBuilder sb = new StringBuilder();

sb.Append("Shop_Product_Query.Pagination");

DbCommand cmd = db.GetStoredProcCommand(sb.ToString());

db.AddInParameter(cmd, "TableName", DbType.String, TableName);//输入参数

db.AddInParameter(cmd, "getFields", DbType.String, getFields);//输入参数

db.AddInParameter(cmd, "OrderField", DbType.String, OrderField);//输入参数

db.AddInParameter(cmd, "whereCondition", DbType.String, whereCondition);//输入参数

db.AddInParameter(cmd, "pageSize", DbType.Int32, pageSize);//输入参数

db.AddInParameter(cmd, "pageIndex", DbType.Int32, pageIndex);//输入参数

db.AddOutParameter(cmd, "recordCount", DbType.Int32, Int32.MaxValue);//输出参数

DataSet ds = db.ExecuteDataSet(cmd);

recordCount = int.Parse(db.GetParameterValue(cmd, "recordCount").ToString());//企业库获取输出参数

return ds;        }

页面层调用DAL:

public void DataBind()

{

int intPageIndex = this.AspNetPager1.CurrentPageIndex;

int intPageSize = this.AspNetPager1.PageSize;

int count = 0;

DataSet dt = Sys_ParamService.GetProductsByPagerProc("products", "PRODUCTCODE,PRODUCTNAME,HAOBAIPRICE", "productcode", "productname like '%蒙牛%'",

intPageSize, intPageIndex, out count);

this.AspNetPager1.RecordCount = count;

GridView1.DataSource = dt;

GridView1.DataBind();        }

//分页事件

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)        {

this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;

DataBind();

}

分页控件样式:

runat="server" AlwaysShow="True" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页"                        PageSize="3" PrevPageText="上一页" ShowCustomInfoSection="Left" CustomInfoTextAlign="Center"                        LayoutType="Table" CustomInfoHTML="当前第%CurrentPageIndex%/%PageCount%页 每页%PageSize%条 共%RecordCount%条记录"                        OnPageChanging="AspNetPager1_PageChanging" PageIndexBoxType="DropDownList" ShowPageIndexBox="Always">                    

               

.paginator        {

font: 12px Arial, Helvetica, sans-serif;

padding: 10px 20px 10px 0;

margin: 0px;        }

.paginator a        {            border: solid 1px #ccc;            color: #0063dc;            cursor: pointer;            text-decoration: none;        }        .paginator a:visited        {            padding: 1px 6px;            border: solid 1px #ddd;            background: #fff;            text-decoration: none;        }        .paginator .cpb        {            border: 1px solid #F50;            font-weight: 700;            color: #F50;            background-color: #ffeee5;        }        .paginator a:hover        {            border: solid 1px #F50;            color: #f60;            text-decoration: none;        }        .paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover        {            float: left;            height: 16px;            line-height: 16px;            min-width: 10px;            _width: 10px;            margin-right: 5px;            text-align: center;            white-space: nowrap;            font-size: 12px;            font-family: Arial,SimSun;            padding: 0 3px;        }    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis PageHelper 是一个 MyBatis 分页插件,能够快速、便捷的进行分页查询,支持多种数据库。使用 PageHelper 可以避免手写 SQL 语句进行分页操作,同时 PageHelper 支持物理分页和逻辑分页两种方式。 下面是使用 PageHelper 进行分页查询的步骤: 1. 导入 PageHelper 依赖 Maven 项目在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.11</version> </dependency> ``` 2. 配置 PageHelper 在 MyBatis 的配置文件中添加以下配置: ``` <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> </plugin> </plugins> ``` 其中 dialect 属性指定了数据库类型,PageHelper 支持的数据库类型包括:oraclemysql、mariadb、sqlite、hsqldb、postgresql、db2、sqlserver、informix、达梦、人大金仓、南大通用、神通、PostgreSQL9.3-9.5。 3. 使用 PageHelper 进行分页查询 在需要进行分页查询的方法中使用 PageHelper.startPage 方法进行分页设置,然后调用查询方法获取查询结果。例如: ``` PageHelper.startPage(1, 10); // 第一页,每页显示 10 条记录 List<User> userList = userDao.selectUserList(); // 查询用户列表 PageInfo<User> pageInfo = new PageInfo<>(userList); // 封装分页结果 ``` 其中 PageHelper.startPage 方法接收两个参数,第一个参数为当前页码,第二个参数为每页显示的记录数。 最后使用 PageInfo 类对查询结果进行封装,得到分页结果。PageInfo 类中包含了分页信息和查询结果。 以上就是使用 MyBatis PageHelper 进行分页查询的基本步骤。需要注意的是,在使用 PageHelper 进行分页查询时,需要确保查询语句中不要使用 limit 关键字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值