zoukankan      html  css  js  c++  java
  • 分页与JDBC显示文档。

    分页

    个人理解:将一个页面分成两个或两个以上的页面,以便实现数据的合理化显示。

    在MySQL中提供了对数据库分页的支持:

    sql语句:select id,name from customer limit 0,5;

    前面的数字表示从第几个位置,后面的数字表示获取的数据多少

    基于数据库提供的支持实现分页的效果,其实就是利用jdbc技术来实现分页。

    表示在customer表中获取从第0个位置开始的五条数据。

    效果显示:

    分页的页面显示数据流程图:

    用户将自己想看的页面以请求的方式发送给servlet,servlet将请求(查询信息)封装到一个对象(QueryInfo)中交给service来处理,service拿到用户的请求(QueryInfo),去调用dao层,让dao层来查询数据库中的信息,从数据库中拿到查询后的数据封装到一个QueryResult中,这样service就拿到了数据库中用户想看的数据信息。这时生成一个PageBean对象,其中封装着需要在jsp页面中的所有需要的一切。最后由service将PageBean中封装的数据带给servlet,servlet再交给jsp页面显示。

    过程步骤,先写好所要封装数据JavaBean(queryinfo,queryresult,pagebean),然后来改造dao,后改造service,再改造servlet。

    分页细节处理:

    1.当分的页码过多时处理方案:

    实现页码的固定,将固定多的页码显示在页面上,并且在动态显示页码条的大小:

    解决代码如下:

     1 //显示固定长度的页码条
     2     public int[] getPagebar() {
     3         int startpage;
     4         int endpage;
     5         int pagebar[]=null;
     6         if(this.totalpage<=10){
     7             pagebar=new int[this.totalpage];
     8             startpage=1;
     9             endpage=this.totalpage;
    10         }else{
    11          pagebar=new int[10];
    12             startpage=this.currentpage-4;
    13             endpage=this.currentpage+5;
    14             if(startpage<1){
    15                 startpage=1;
    16                 endpage=10;
    17             }
    18                 if(endpage>this.totalpage){
    19                     startpage=this.totalpage-9;
    20                     endpage=this.totalpage;
    21                 }
    22         }
    23         int index=0;
    24         for(int i=startpage;i<=endpage;i++){
    25             pagebar[index++]=i;
    26         }
    27     this.pagebar=pagebar;
    28     return this.pagebar;
    29     //显示所有的页码条
    30 //        int pagebar[]=new int[this.totalpage];
    31 //        for(int i=1;i<+this.totalpage;i++){
    32 //            pagebar[i-1]=i;//33 //        }
    34 //        this.pagebar=pagebar;
    35 //        return pagebar;
    36     }

    2.实现当点击页码时所点击的页码变色。

    代码如下:

    1 </c:if>
    2  <!-- 迭代页码条 -->
    3  <c:forEach var="pagenum" items="${pagebean.pagebar}" >
    4  <!-- 利用if条件判断让当前所在的页码变色 -->
    5  <c:if test="${pagenum==pagebean.currentpage}">
    6  <font color="red"> ${pagenum}</font>

    3.当修改每页数据显示大小时,可以改变数据在页面的显示大小。

    代码参考listcustomer.jsp中的gotopage方法。

    4.实现功能GO直接跳转到想去的页面。

    代码参考listcustomer.jsp中的gotopage方法。

     JDBC技术深入:

    1.使用JDBC大数据:

    1. 使用JDBC处理大文本(字符):

    对于MYSQL中的Text类型,可以调用如下的方法设置:

    PreparedStatement.setCharacterStream(index,reader,length);

    注意length长度需设置,并且设置为int型。

    对于MYSQL中的Text类型,可调用如下方法获取:

    reader=resultSet.getCharacterSteam(i);

    reader=resultSet.getClob(i).getCharcaterStream();

    string s=resultSet.getString(i);

    2.使用JDBC来处理二进制的数据(字节):

    虽然在此可以将大文本大数据存到数据库中但一般不建议这样做,因为在写入和读取时会浪费很多时间。

     使用JDBC进行批处理:

    第一种方式:

    第二种方式:

    采用PreparedStatement,addBatch()进行批处理

    1 //当存入的数据过多时采用分组处理将1000条作为一此处理。
    2 //    if(i%1000==0){
    3 //    st.executeBatch();
    4 //    st.clearBatch();
    5 // }
    我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键,这时候通常用getGeneratedKeys()方法获取主键

    JDBC调用存储过程:

    相当于一个Java方法,只不过是属于数据库中方法。

    数据处理的两种方法:一是直接在Java中调取数据库中的存储过程,来获取并处理数据。

    二是在Java中通过JDBC来写方法来处理数据库中的数据。

    存储过程的优点:不必向外界暴露过多的信息。确保信息的安全性。

    可以直接被Java程序调用简化了代码。

    1 delimiter $$
    2 CREATE PROCEDURE demoSp(IN inputParam VARCHAR(255), INOUT inOutParam varchar(255) )
    3 BEGIN
    4     SELECT CONCAT('zyxw---',inputParam) into inOutParam;
    5 END $$
    6 delimiter ;
  • 相关阅读:
    unicode下各种类型转换CString、string
    单元测试简介
    linux系统目录详解
    Python 几个重要的内置函数
    python join split
    将博客搬至CSDN
    COCOS2DX3.0的3种触摸响应机制
    [转] 千万别在最能吃苦的年纪选择安逸
    明白什么是“五险一金”
    MAC 安装更新 ANT
  • 原文地址:https://www.cnblogs.com/shuai9999/p/9135153.html
Copyright © 2011-2022 走看看