<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 閱讀(697) 評論(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均為當前請求頁面,只是數據類型不同。


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


    網站導航:
     
    主站蜘蛛池模板: xxxxwww免费| 亚洲色偷偷综合亚洲AV伊人| 亚洲日韩精品A∨片无码加勒比| 国产国产人免费人成免费视频| 中文在线免费看视频| 亚洲精品电影天堂网| 免费A级毛片无码A| 久久国产精品免费观看| 久久亚洲国产成人影院| 亚洲中文字幕久久精品无码APP| 91热成人精品国产免费| 成人在线免费视频| 亚洲国产成人综合| 亚洲无码精品浪潮| 中文字幕av无码无卡免费| 中文字幕在线视频免费观看| 国产精品亚洲综合五月天| 国产亚洲精品资在线| 女人18特级一级毛片免费视频| 久久国产美女免费观看精品| 亚洲国产成人99精品激情在线| 国产亚洲精aa成人网站| 四虎永久在线精品免费网址 | 久久亚洲国产精品一区二区| 成人毛片免费在线观看| 国产成人精品免费久久久久| 一二三四在线观看免费中文在线观看| 亚洲一级在线观看| 久久精品国产亚洲夜色AV网站| 国产免费拔擦拔擦8x| 美女被cao免费看在线看网站| 中文字幕不卡免费视频| 毛片亚洲AV无码精品国产午夜| 亚洲成人一级电影| 亚洲伊人色欲综合网| 亚洲国产精品视频| 成年女人免费碰碰视频| 91久久成人免费| 国内永久免费crm系统z在线| 老外毛片免费视频播放| 亚洲精品无码久久久久秋霞 |