<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blogjava's web log

    blogjava's web log
    ...

    偷窺struts+hibernate分頁(第一種方法)

    根據原文有點改動。原文忘記在那里看到了。看到提個醒


    新建表

    DROP?DATABASE?IF?EXISTS?`wjcms`;
    CREATE?DATABASE?`wjcms`?/*!40100?DEFAULT?CHARACTER?SET?gb2312?*/;
    USE?`wjcms`;

    #
    #?
    Table?structure?for?table?t_article
    #

    CREATE?TABLE?`t_article`?(
    ??`a_id`?
    int(11)?NOT?NULL?auto_increment,
    ??`a_sort`?
    int(11)?NOT?NULL?default?'0',
    ??`a_title`?
    varchar(50)?default?NULL,
    ??`a_body`?
    text,
    ??`a_author`?
    varchar(11)?default?'',
    ??`a_hit`?
    int(11)?NOT?NULL?default?'0',
    ??`c_id`?
    int(11)?default?'0',
    ??`a_date`?
    varchar(20)?default?NULL,
    ??
    PRIMARY?KEY??(`a_id`)
    )?

    實體

    public class articleVO {
    ??? private int a_id;
    ??? private int a_sort;
    ??? private int a_hit;
    ??? private int c_id;
    ??? private String a_title;
    ??? private String a_body;
    ??? private String a_author;
    ??? private String a_date;
    ??? // getter setter


    新建page.java

    package?page.dal;

    public?class?page?{
    ????
    private?int?totalRows;?//總行數
    ????private?int?pageSize?=?10;?//每頁顯示的行數
    ????private?int?currentPage;?//當前頁號
    ????private?int?totalPages;?//總頁數
    ????private?int?startRow;?//當前頁在數據庫中的起始行

    ????
    public?page(int?_totalRows)?{
    ?????totalRows?
    =?_totalRows;
    ?????totalPages
    =totalRows/pageSize;
    ?????
    int?mod=totalRows%pageSize;
    ?????
    if(mod>0){
    ???????totalPages
    ++;
    ?????}
    ?????currentPage?
    =?1;
    ?????startRow?
    =?0;
    ???}

    ???
    public?int?getStartRow()?{
    ?????
    return?startRow;
    ???}

    ???
    public?int?getTotalPages()?{
    ?????
    return?totalPages;
    ???}

    ???
    public?int?getCurrentPage()?{
    ?????
    return?currentPage;
    ???}

    ???
    public?int?getPageSize()?{
    ?????
    return?pageSize;
    ???}

    ???
    public?void?setTotalRows(int?totalRows)?{
    ?????
    this.totalRows?=?totalRows;
    ???}

    ???
    public?void?setStartRow(int?startRow)?{
    ?????
    this.startRow?=?startRow;
    ???}

    ???
    public?void?setTotalPages(int?totalPages)?{
    ?????
    this.totalPages?=?totalPages;
    ???}

    ???
    public?void?setCurrentPage(int?currentPage)?{
    ?????
    this.currentPage?=?currentPage;
    ???}

    ???
    public?void?setPageSize(int?pageSize)?{
    ?????
    this.pageSize?=?pageSize;
    ???}

    ???
    public?int?getTotalRows()?{
    ?????
    return?totalRows;
    ???}

    ???
    public?void?first()?{
    ?????currentPage?
    =?1;
    ?????startRow?
    =?0;
    ???}

    ???
    public?void?previous()?{
    ?????
    if?(currentPage?==?1)?{
    ???????
    return;
    ?????}
    ?????currentPage
    --;
    ?????startRow?
    =?(currentPage?-?1)?*?pageSize;
    ???}

    ???
    public?void?next()?{
    ?????
    if?(currentPage?<?totalPages)?{
    ???????currentPage
    ++;
    ?????}
    ?????startRow?
    =?(currentPage?-?1)?*?pageSize;
    ???}

    ???
    public?void?last()?{
    ?????currentPage?
    =?totalPages;
    ?????startRow?
    =?(currentPage?-?1)?*?pageSize;
    ???}

    ???
    public?void?refresh(int?_currentPage)?{
    ?????currentPage?
    =?_currentPage;
    ?????
    if?(currentPage?>?totalPages)?{
    ???????last();
    ?????}
    ???}

    ?}



    新建 pageHelp.java

    package?page.dal;
    import?javax.servlet.http.*;

    public?class?PagerHelp?{
    ????
    public?static?page?getPager(HttpServletRequest?httpServletRequest,int?totalRows)?{

    ?????
    //定義pager對象,用于傳到頁面
    ?????page?pager?=?new?page(totalRows);

    ?????
    //從Request對象中獲取當前頁號
    ?????String?currentPage?=?httpServletRequest.getParameter("currentPage");

    ?????
    //如果當前頁號為空,表示為首次查詢該頁
    ?????
    //如果不為空,則刷新page對象,輸入當前頁號等信息
    ?????if?(currentPage?!=?null)?{
    ???????pager.refresh(Integer.parseInt(currentPage));
    ?????}

    ?????
    //獲取當前執行的方法,首頁,前一頁,后一頁,尾頁。
    ?????String?pagerMethod?=?httpServletRequest.getParameter("pageMethod");

    ?????
    if?(pagerMethod?!=?null)?{
    ???????
    if?(pagerMethod.equals("first"))?{
    ?????????pager.first();
    ???????}?
    else?if?(pagerMethod.equals("previous"))?{
    ?????????pager.previous();
    ???????}?
    else?if?(pagerMethod.equals("next"))?{
    ?????????pager.next();
    ???????}?
    else?if?(pagerMethod.equals("last"))?{
    ?????????pager.last();
    ???????}
    ?????}
    ?????
    return?pager;
    ???}

    }



    新建 util.java
    package?page.dal;
    import?net.sf.hibernate.Query;
    import?net.sf.hibernate.cfg.Configuration;
    import?java.util.List;
    import?net.sf.hibernate.HibernateException;
    import?net.sf.hibernate.SessionFactory;
    import?net.sf.hibernate.Session;
    import?java.util.*;
    public?class?util?{
    ????
    public?util()?{
    ????}
    ?????
    private?Session?ss=null;
    ????
    public?Session?getSession()
    ??{
    ??????
    //??Configuration?config=null;
    ??????SessionFactory?sessionFactory;
    ??????
    try?{
    ??????????Configuration?cfg?
    =?new?Configuration();
    ??????????sessionFactory?
    =?cfg.addClass(articleVO.class).
    ???????????????????????????buildSessionFactory();
    ??????????
    //?SessionFactory?sessionFactory=config.buildSessionFactory();
    ??????????ss?=?sessionFactory.openSession();
    ??????????
    return?ss;
    ??????}?
    catch?(HibernateException?ex)?{
    ??????????System.out.print(
    "getsession出錯了。。"?+?ex.getMessage());
    ??????????
    return?null;
    ??????}
    ??}

    ??
    public?int?getCount()
    ??{
    ??????String?sql
    ="select?count(*)?from?articleVO"?;
    ??????
    this.getSession();

    ????
    try?{
    ?????
    //?ss.createQuery("select?count(a)as?cont?from?articleVO?a?");
    ??????int?rows=?((Integer)?ss.iterate(sql).next()).intValue();
    ??????ss.flush();
    ??????
    return?rows;

    ????}?
    catch?(HibernateException?ex)?{
    ????????System.out.print(
    "ex::"+ex.getMessage());
    ????????
    return?0;
    ????}


    ??}

    ??
    public?Collection??getList(int?pagesize,int?currow)?throws?HibernateException?{
    ??????Collection?vehicleList?
    =?null;
    ??????
    this.getSession();
    ??????Query?q
    =ss.createQuery("from?articleVO");
    ??????q.setFirstResult(currow);
    ??????q.setMaxResults(pagesize);
    ??????vehicleList
    =q.list();
    ??????ss.flush();
    ??????
    return?vehicleList;
    ??}

    }


    新建 struts? PageAction.java


    package?page.dal;

    import?org.apache.struts.action.ActionMapping;
    import?org.apache.struts.action.ActionForm;
    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;
    import?org.apache.struts.action.ActionForward;
    import?org.apache.struts.action.Action;
    import?page.dal.*;
    import?java.util.*;
    import?net.sf.hibernate.*;

    public?class?pageAction?extends?Action?{
    ????
    public?ActionForward?execute(ActionMapping?mapping,?ActionForm?form,
    ?????????????????????????????????HttpServletRequest?request,
    ?????????????????????????????????HttpServletResponse?response)?{
    ????????Collection?clInfos?
    =?null;//用于輸出到頁面的記錄集合
    ????????int?totalRows;//記錄總行數
    ????????util?dal=new?util();
    ????????totalRows
    =dal.getCount();
    ????????System.out.print(
    "總行數=="+totalRows);
    ????????page?p
    =PagerHelp.getPager(request,totalRows);
    ????????
    try?{
    ????????????clInfos?
    =?dal.getList(p.getPageSize(),?p.getStartRow());

    ????????}?
    catch?(HibernateException?ex)?{
    ????????????System.out.print(
    "action里的錯誤="+ex.getMessage());
    ????????}
    ????????request.setAttribute(
    "page",p);
    ????????request.setAttribute(
    "list",clInfos);
    ????????
    return?mapping.findForward("page");
    ????????
    //pageForm?pageForm?=?(pageForm)?form;
    ??????
    //??throw?new?java.lang.UnsupportedOperationException(
    ??????????????
    //??"Method?$execute()?not?yet?implemented.");
    ????}
    }


    前臺頁面

    <%@?taglib?uri="/WEB-INF/struts-tiles.tld"?prefix="tiles"?%>
    <%@?taglib?uri="/WEB-INF/struts-nested.tld"?prefix="nested"?%>
    <%@?taglib?uri="/WEB-INF/struts-logic.tld"?prefix="logic"?%>
    <%@?taglib?uri="/WEB-INF/struts-bean.tld"?prefix="bean"?%>
    <%@?taglib?uri="/WEB-INF/struts-html.tld"?prefix="html"?%>
    <%@?page?contentType="text/html;?charset=GBK"?%>
    <html:html>
    <head>
    <title>
    page
    </title>
    </head>
    <body>
    <table?align="center"?border="2">
    <tr>
    <th>a_title</th>
    <th>a_body</th>
    <th>a_a_date</th>
    <th>a_author</th>
    </tr>

    <logic:iterate?id="listd"?name="list">
    <tr>
    <td>
    <bean:write?name="listd"?property="a_title"/>
    </td>
    <td>
    <bean:write?name="listd"?property="a_author"/>
    </td>
    <td>
    <bean:write?name="listd"?property="a_date"/>
    </td>
    <td>
    <bean:write?name="listd"?property="a_date"/>
    </td>
    </tr>
    </logic:iterate>

    </table>

    <bean:write?name="page"?property="currentPage"/>
    <bean:write?name="page"?property="totalPages"?/>
    <html:link?action="/pageAction.do?pageMethod=first"
    paramName
    ="page"?paramProperty="currentPage"?paramId="currentPage">首頁</html:link>
    ???
    <html:link?action="/pageAction.do?pageMethod=previous"
    paramName
    ="page"?paramProperty="currentPage"?paramId="currentPage">上一頁</html:link>
    ???
    <html:link?action="/pageAction.do?pageMethod=next"
    paramName
    ="page"?paramProperty="currentPage"?paramId="currentPage">下一頁</html:link>

    ???
    <html:link?action="/pageAction.do?pageMethod=last"
    paramName
    ="page"?paramProperty="currentPage"?paramId="currentPage">尾頁</html:link>
    </body>
    </html:html>



    啟動瀏覽 pageAction.do? 運行OK。



    ****************************************************************************************


    配置文件


    <?xml?version="1.0"?encoding="UTF-8"?>

    <!DOCTYPE?hibernate-mapping?PUBLIC
    ????"-//Hibernate/Hibernate?Mapping?DTD?2.0//EN"
    ????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
    >
    <hibernate-mapping>

    ????
    <class?name="page.dal.articleVO"?table="t_article"?>


    ????
    <id?name="a_id"?column="a_id"?unsaved-value="0"?>
    ??????
    <generator?class="native"/>
    ?
    </id>
    ?????
    <property?name="c_id"????column="c_id"/>
    ?????
    <property?name="a_title"?column="a_title"/>
    ?????
    <property?name="a_sort"??column="a_sort"/>
    ?????
    <property?name="a_date"??column="a_date"/>
    ?????
    <property?name="a_body"??column="a_body"/>
    ?????
    <property?name="a_hit"???column="a_hit"/>
    ?????
    <property?name="a_author"?column="a_author"/>
    ???
    ????
    ??
    </class>

    </hibernate-mapping>

    hibernate.dialect?net.sf.hibernate.dialect.MySQLDialect
    hibernate.connection.driver_class?org.gjt.mm.mysql.Driver
    hibernate.connection.url?jdbc:mysql://localhost:
    3306/wjcms
    hibernate.connection.username?root
    hibernate.connection.password?
    hibernate.connection.pool_size?
    1
    hibernate.proxool.pool_alias?pool1
    hibernate.show_sql?true
    hibernate.max_fetch_depth?
    1
    hibernate.cache.use_query_cache?true



    posted on 2006-08-29 11:38 record java and net 閱讀(16738) 評論(18)  編輯  收藏 所屬分類: javaSpring

    評論

    # re: 偷窺struts+hibernate分頁(第一種方法)[未登錄] 2007-06-21 22:06 cc

    呵呵 弄了2天 終于結合到了 我的程序里了 非常的感謝你!!!

    順便問一下 你的page是actionForm嗎 我對你的page的數據封裝(取值,賦值)不是很明白 你能不能給我講一講 謝謝你

    我是名新手 希望您能給我解惑!!

    QQ:531672250  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2007-08-17 22:56 書亭

    感謝分享  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-02-13 17:26 nicelife

    安裝你的實例一步步做了一遍練習,
    測試結果,100萬條以內的記錄5秒內能查詢出來,500萬條以內10秒,有點慢,如果換成小型機或服務器能提高很多,不知道是否正常,能夠改進提高速度。  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-02-13 17:27 nicelife

    -- Test PC Environment
    winxp, Oracle 9.2.0.1.0, j2sdk 1.5.0_11, Tomcat5.0, Eclipse 3.2, PL/SQL Developer 7.0, Struts 1.2.9, Hibernate 3.2.2  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-02-27 10:47 weber

    好像URL中的currentPage和頁面中的第?頁顯示不一致,要顯示一致如何做到?  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-03-10 15:03 wenlong342

    多謝摟主了,很好的程序.  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-03-13 13:46 hyc

    不太實用....  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-03-27 13:13 COOL

    寫得還行,挺不錯,  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-05-15 20:12 jiangdong

    樓主可不可以把可以直接運行源文件發一份給我,這上面有錯誤,不勝感激!
    郵箱:
    jiangdongsx@gmail.com  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-06-18 11:09 fy_iceworld

    您好。請問在這句中 int rows= ((Integer) ss.iterate(sql).next()).intValue();

    ss.iterate這個方法為什么eclipse提示找不到??
      回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2008-10-14 16:05 asdf

    很不錯哦...  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 關于這個entire的一些具體問題 2009-04-17 21:49 ss

    假如,我要分頁的內容不是整張表,而是一個有Where條件的集合,該怎么改?  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2009-05-18 00:48 angely

    不知道為什么,我currentPage一直獲取到的都是空置!

    //從Request對象中獲取當前頁號
    String currentPage = httpServletRequest.getParameter("currentPage");  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2009-06-12 16:29 hsj

    分頁最郁悶就是又要分頁,又要知道總記錄數.樓主辦法有兩個問題:
    1.用兩次查詢來分別獲得總記錄數和記錄集.數據量大的話相當慢.
    2.得到記錄總數的方法(count(*))用的范圍不廣,如果我的SQL里有goup by , order by 怎么辦?  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2009-10-25 19:46 struts1.x

    暈,struts1.x呀,也不注明,看完才明白。  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2010-06-23 20:50

    查詢的時候想加個查詢條件 ,就是typeid 點下一頁的時候就獲取不到了 .怎么解決  回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法)[未登錄] 2011-01-06 14:28

    樓主看了你的代碼 感覺很好  但是我拿下來運行 都是有錯  你能不能把你的原代碼(所以的)都發給我郵箱里一下 謝謝了414832466@qq.com   回復  更多評論   

    # re: 偷窺struts+hibernate分頁(第一種方法) 2012-02-20 11:26 walkingdog

    代碼很亂  回復  更多評論   

    導航

    常用鏈接

    留言簿(44)

    新聞檔案

    2.動態語言

    3.工具箱

    9.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 男女交性无遮挡免费视频| 久久青草免费91线频观看不卡| 国产精品亚洲综合专区片高清久久久| 一级特黄录像免费播放肥| 亚洲永久永久永久永久永久精品| 最近中文字幕无吗免费高清| 日韩精品视频在线观看免费| 97久久精品亚洲中文字幕无码| 女人被弄到高潮的免费视频| 182tv免费视频在线观看| wwwxxx亚洲| 亚洲国产婷婷六月丁香| 午夜精品在线免费观看| 精品成人免费自拍视频| 久久亚洲色WWW成人欧美| 亚洲国产成人久久综合一| 在线观看国产情趣免费视频| 日韩精品在线免费观看| 国产成人+综合亚洲+天堂| 中文字幕亚洲综合精品一区| 亚洲国产精品人人做人人爽| 97视频热人人精品免费| 中文字幕免费不卡二区| 狠狠综合亚洲综合亚洲色| 亚洲精品在线免费观看| 成人午夜亚洲精品无码网站| 国产自产拍精品视频免费看| **一级一级毛片免费观看| 久久精品免费网站网| 蜜桃传媒一区二区亚洲AV| 亚洲一区欧洲一区| 亚洲一区二区三区首页| 国产亚洲精品高清在线| 真实乱视频国产免费观看| 久久99九九国产免费看小说| 日韩精品极品视频在线观看免费| 成人毛片免费播放| 99国产精品免费观看视频| 久久一区二区免费播放| 一区二区三区免费在线视频| 最新亚洲人成网站在线观看|