JavaWeb 第3章 任务  3 实现分页查询新闻信息

JavaWeb 应用设计及实战 目录

关键步骤如下。

  • 正确编写分页查询 SQL 。
  • 编写存储过程实现分页查询。
  • 在程序中调用存储过程。

3.3.1  分页查询及其实现

  1.生活中的分页

    在进行网页浏览时,很多情况下都可以看到分页显示的应用,如网上购物时的商品

展示;查看电子邮箱时的电子邮件列表,如图 3.4 所示。

     使用分页最大的优势在于。

  • 数据清晰直观
  • 页面不再冗长
  • 不受数据量的限制
  • 降低数据服务器查询压力

          图 3.4  生活中的分页应用

2. 数据分页查询

   分页如何实现呢?其实,在实际应用过程中,分页的实现分为两个部分,首先是数

据分页查询,其次才是数据分页显示。数据分页查询的实现步骤如下。

    (1)确定每页显示的数据数量。

      (2)确定需要显示的数据总数量。

示例  3 

 查询新闻信息系统中新闻的总记录数。

   关键代码:

……
    //编写查询新闻总数量的 SQL 语句
    String sql = "select count(*) from news_detail";
    //通过 JDBC 执行 SQL 语句
    Object[] params={};
    ResultSet rs= this.executeSQL(sql,params);
    ……
    //获取总记录数
    totalCount=rs.getInt();
……

(3)计算显示的页数。

示例 4

根据新闻信息系统新闻总记录数,计算所需的总页数。

    关键代码:

……
    //总页数
    private int totalPageCount = 1;
    //页面大小,即每页显示记录数
    private int pageSize = 0;
    //记录总数
    private int recordCount =0;
……
    //设置总页数
    private void setTotallPageCountByRs(){
      if(this.recordCount%this.pageSize==0)
        this.totalPageCount=this.recordCount/this.pageSize;
      else if(this.recordCount%this.pageSize>0)
        this.totalPageCount=this.recordCount/this.pageSize+1;
      else
        this.totalPageCount=0;
    }
……

了解具体实现请扫描二维码。

(4)编写分页查询 SQL 语句。

   示例 5

  编码实现新闻信息的分页查询。   

    关键代码:

……
    List<news> newsList = new ArrayList<News>();
    //编写分页查询 SQL 语句
    String sql = "……";
    Page page = new Page();
    page.setCurrPageNo(pageNo);  //设置当前页码
    page.setPageSize(pageSize);   //每页显示记录数
    //执行分页查询
……

至此,分页查询的任务就基本完成。

3.分页查询小结

   请注意实现分页查询过程中的如下几个关键点。

  (1)计算总页数。

      1)如果总记录数能够被每页显示记录数整除,那么:

                                     总页数 = 总记录数/每页显示记录数

      2)如果总记录数不能够被每页显示记录数整除,那么:

                                     总页数 = 总记录数/每页显示记录数+1;

(2)计算分页查询时的起始记录数。

                     起始记录的下标 =(当前页码 - 1)*每页显示的记录数

3.3.2   使用存储过程封装分页查询

    实现分页查询,有时可能会将数据分页查询的 SQL 语句编写成存储过程,这样就

需要在程序中对存储过程进行调用,这就涉及 CallableStatement 接口的使用。

    1.CallableStatement 接口概述

     CallableStatement 接口继承自 PreparedStatement 接口。使用 CallableStatement 接口

可以实现对存储过程的调用,而 CallableStatement 接口的常用方法如表 3-3 所示。

表 3-3 CallableStatement 接口的常用方法
方法返回类型说明
execute()boolean

执行SQL 语句,如果第一个结果是 ResultSet 对象,则返

回 true :如果第一个结果是更新计数或者没有结果,则返回

false

registerOutParameter(int parameter Index,int sqlType)

void

按参数的顺序位置 parameterIndex 将 OUT 参数注册为 JDBC类型 sqlType,sqlType 为 Type 类中常量

getType (Int parameterIndex)Type根据参数的序号获取指定的 JDBC 参数的值

     使用 CallableStatement 接口调用存储过程的语法如下。

     

{call<procedure-name[(<arg1>,<arg2>,…)]}
  • procedure-name:存储过程名称。
  • arg:参数,多个参数之间以逗号分隔。

2. CallableStatement 接口的应用

使用 CallableStatement 接口调用存储过程的步骤如下。

    1)修改程序执行的 SQL 语句。

    2)执行存储过程。

   3)对参数的类型进行设置。

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值