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

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

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

    posts - 17, comments - 1, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    用hibernate實現數據庫底層分頁

    Posted on 2006-11-02 20:43 HotJava 閱讀(701) 評論(0)  編輯  收藏

    1、創建SessionFactory,為了減輕服務器負擔,保證一個應用中僅生成一個SessionFactory即可.

    package ?dao;

    import ?org.hibernate.cfg. * ;
    import ?org.hibernate. * ;

    public ? class ?MySessionFactory? {
    ????
    private ? static ?Configuration?config = null ;
    ????
    private ? static ?SessionFactory?sf = null ;
    ????
    private ?MySessionFactory() {
    ????????config
    = new ?Configuration().configure();
    ????????sf
    = config.buildSessionFactory();
    ????}

    ????
    ????
    public ? static ?SessionFactory?getSessionFactory() {
    ????????
    if (sf == null ) {
    ????????????
    new ?MySessionFactory();
    ????????}

    ????????
    return ?sf;
    ????}

    ????
    }

    ?2、實現分頁過程
    方法getTotalPage()得到總頁數, getObject()將所查詢的數據封裝到list里!

    ?

    package ?dao;

    import ?java.util.List;

    import ?org.hibernate.Query;
    import ?org.hibernate.Session;
    import ?org.hibernate.SessionFactory;
    import ?org.hibernate.Transaction;

    public ? class ?pageList? {
    ????
    // ?分頁實現代碼:
    ????
    // ?得到總頁數?pagesize為一個頁面顯示的記錄數
    ???? public ? int ?getTotalPage(String?hql,? int ?pagesize)? {
    ????????SessionFactory?sf?
    = ?MySessionFactory.getSessionFactory();
    ????????Session?session?
    = ?sf.openSession();
    ????????Transaction?ts?
    = ?session.beginTransaction();
    ????????Query?query?
    = ?session.createQuery(hql);
    ????????List?list?
    = ?query.list();
    ????????
    int ?totalrs? = ?list.size();
    ????????
    int ?totalpage? = ? 0 ;
    ????????
    if ?(totalrs? % ?pagesize? > ? 0 )? {
    ????????????totalpage?
    = ?totalrs? / ?pagesize? + ? 1 ;
    ????????}
    ? else ? {
    ????????????totalpage?
    = ?totalrs? / ?pagesize;
    ????????}

    ????????ts.commit();
    ????????session.close();
    ????????
    return ?totalpage;
    ????}


    ????
    // ?分頁list
    ???? public ?List?getObject(String?hql,? int ?page,? int ?pagesize)? {
    ????????
    if ?(page? < ? 1 )page? = ? 1 ;
    ????????SessionFactory?sf?
    = ?MySessionFactory.getSessionFactory();
    ????????Session?session?
    = ?sf.openSession();
    ????????Transaction?ts?
    = ?session.beginTransaction();
    ????????Query?query?
    = ?session.createQuery(hql);
    ????????query.setFirstResult(page?
    * ?pagesize? - ?pagesize);
    ????????query.setMaxResults(pagesize);
    ????????List?list?
    = ?query.list();
    ????????ts.commit();
    ????????
    // ?session.close();
    ???????? return ?list;
    ????}


    ????
    // ?分頁代碼完
    }

    代碼中page為請求的頁面,pagesize為一個頁面顯示的記錄數。

    3、應用實例:

    ?

    <% @?page?language = " java " ?contentType = " text/html;?charset=GBK "
    ????pageEncoding
    = " GBK "
    %>
    <% @?page?import = " dao.*,po.*,java.util.* " %>
    <% @?taglib?uri = " http://jakarta.apache.org/struts/tags-bean "
    ????prefix
    = " bean "
    %>
    <% @?taglib?uri = " http://jakarta.apache.org/struts/tags-html "
    ????prefix
    = " html "
    %>
    <%
    ????
    String ?nowpage? = ?request.getParameter( " page " );
    //如果請求業面為空或第一次訪問時,頁面設為1
    ????
    if ?(nowpage? == ? null ?||?nowpage.equals( "" ))nowpage? = ? " 1 " ;
    //將nowpage轉為整型
    ????
    int ?mypage? = ? Integer .parseInt(nowpage);
    ????
    if ?(mypage? <= ? 0 )mypage? = ? 1 ;
    //頁面記錄數設為10
    ????
    int ?pagesize? = ? 10 ;
    ????
    String ?hql? = ? " from?ExamStudent " ;
    ????pageList?pl?
    = ? new ?pageList();
    ????
    int ?totalpage? = ?pl.getTotalPage(hql,?pagesize);
    //當請求頁面大于總頁數,則將當前請求頁面設為最大頁數
    ????
    if ?(mypage? > ?totalpage)mypage? = ?totalpage;
    ????ArrayList?list?
    = ?(ArrayList)?pl.getObject(hql,?mypage,pagesize);
    ????Iterator?it?
    = ?list.iterator();
    %>
    < html >
    < head >
    < title > JSP?for?AddStudentForm?form </ title >
    </ head >
    < body >
    < table? border ="1" >
    ????
    < tr >
    ????????
    < td > 學號 </ td >
    ????????
    < td > 姓名 </ td >
    ????????
    < td > 性別 </ td >
    ????????
    < td > 電話 </ td >
    ????????
    < td? colspan ="2" > 操作 </ td >
    ????
    </ tr >
    ????
    <%
    ????????????
    while ?(it.hasNext())?{
    ????????????ExamStudent?es?
    = ?(ExamStudent)?it.next();
    ????
    %>
    ????
    < tr >
    ????????
    < td > <% = es.getStudentClassid() %> </ td >
    ????????
    < td > <% = es.getStudentName() %> </ td >
    ????????
    < td > <% = es.getStudentSex() %> </ td >
    ????????
    < td > <% = es.getStudentTel() %> </ td >
    ????????
    < td >< a? href ="updateStudent.jsp?id=<%=es.getStudentId()%>" > 修改 </ a ></ td >
    ????????
    < td >< a? href ="/exam/deleteStudent?id=<%=es.getStudentId()%>" > 刪除 </ a ></ td >
    ????
    </ tr >
    ????
    <%
    ????????}
    ????????list.clear();
    ????
    %>
    ????
    < tr >
    ????????
    < td? colspan ="6" >< a? href ="addStudent.jsp?page=1" > 首頁 </ a > || < a
    ????????????
    href ="addStudent.jsp?page=<%=mypage-1%>" > 上一頁 </ a > || < a
    ????????????
    href ="addStudent.jsp?page=<%=mypage+1%>" > 下一頁 </ a > || < a
    ????????????
    href ="addStudent.jsp?page=<%=totalpage%>" > 末頁 </ a ></ td >
    ????
    </ tr >
    </ table >
    </ body >
    </ html >

    ?

    頁面中page ,nowpage,mypage均為當前請求頁面,只是數據類型不同。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲综合在线成人一区| 久久亚洲免费视频| 精品亚洲成A人在线观看青青| 天天影院成人免费观看| 久久久久亚洲AV无码观看| 午夜影院免费观看| 久久99亚洲网美利坚合众国| 免费福利在线视频| 亚洲欧洲国产成人精品| 69成人免费视频| 亚洲夂夂婷婷色拍WW47| 成年女人免费视频播放77777| 亚洲人成人网站18禁| 国产成人免费片在线观看| 免费一级毛suv好看的国产网站| 亚洲精品美女久久久久99小说| 免费无码一区二区| 亚洲国产成人精品无码区在线观看 | 免费播放一区二区三区| 亚洲最大免费视频网| 我们的2018在线观看免费高清| 亚洲精品无码久久久久久 | 亚洲国产精品无码久久久蜜芽| 久久这里只精品99re免费| 亚洲天堂一区二区三区| 最近中文字幕免费mv视频7| 黄色a三级免费看| 亚洲国产a∨无码中文777| 一二三四在线播放免费观看中文版视频| 日本亚洲免费无线码| www.亚洲色图.com| 久久青草精品38国产免费| 亚洲综合久久一本伊伊区| 国产色婷婷精品免费视频| 丝袜足液精子免费视频| 亚洲a∨无码男人的天堂| 亚洲AV无码乱码在线观看性色扶| a国产成人免费视频| 亚洲а∨精品天堂在线| 亚洲国产精品无码久久久不卡 | 国产AV旡码专区亚洲AV苍井空|