この記事では、Hibernate Frameworkデータページングテクノロジーについて説明します。次のように、参照のために共有してください。
1.データページングメカニズムの基本的なアイデア:
(1)記録スパン、つまり、各ページに表示されるレコードの数を決定します。これは、実際の状況に従って決定できます。
(2)レコードの総数を取得します。つまり、ページに表示されるレコードの総数を取得します。目的は、この数に基づいて分布の総数を決定することです。
(3)ページング後のページの総数を決定します。フォーミュラを使用できます。「ページの総数=(レコードの総数-1) /ページ + 1ページごとに表示されるレコード数」。
(4)現在のページ数に従ってデータを表示します。ページ数が1未満の場合、1に等しくなります。ページの最大数よりも大きい場合、ページの最大数に等しくなります。
(5)ループステートメント分布を介してクエリの結果を表示します。
2。以前のnレコードを取得します:
SQL構文:
どこでトップnfromテーブルを選択してください...注文...
例:最初の4つのレコードを取得します
車から上位4 *を選択します
3。ページングデータを取得する:
文字列sql = "select top"+pagesize+"* from car where id notin(select top"+(page-1)* pagesize+"id asc by id asc by id asc
パラメーターは次のとおりです。
Pagesize:ページごとに表示されるレコードの数
ページ:現在のページ数
車:データテーブル名
4.mysqlデータベースページネーション
MySQLデータベースは、簡単なデータページングを可能にする制限関数を提供します。
制限関数は、選択されたクエリステートメントによって返される行数を制限するために使用されます。
文法:
選択...テーブルから...注文...制限[オフセット]、行
パラメーターは次のとおりです。
オフセット:返される最初の行のオフセットを指定します。スタート行のオフセットは0です。オプションです。
行:返された行の数を指定します。
5.mysqlはページングされたデータを取得します
/**** @paramページページ* @param Pageizeページごとに表示されるレコードの数* @return return result set*/public resultet indorder(int page、int pagesize){string strsql = "select* from car order by id lime" +(page -1)* pagesize + "、" + pagesize + ""; // sql queryステートメントステートメントpstmt = nullを定義します。結果rs = null; // query query result set object try {pstmt = conn.createStatement(); rs = pstmt.executequery(strsql); // queryステートメントを実行} catch(例外e){e.printstacktrace(); }最後に{try {if(pstmt!= null){rs.Close(); pstmt.close(); }} catch(例外e){e.printstacktrace(); }} rsを返します。 // return result set}6。データページングの例
6.1プロジェクト構造のページ:
6.2car.javaプログラムリスト:
パッケージcom.cdd.util;/** *車両情報 * @author xu qiao hui * */public class car {private string id;プライベート文字列名;;プライベートストリングブランド。プライベートストリングエンジネナム;プライベートストリング状態;プライベート文字列の備考;パブリックカー(int size){} public car(){} public car(string id、string name、string brand、string enginenum、string state、string remarks){super(); id = id; this.name = name; this.brand = brand; this.enginenum = enginenum; this.state = state; this.remarks = remarks; } public string getId(){return id; } public void setid(string id){id = id; } public string getname(){return name; } public void setName(string name){this.name = name; } public string getBrand(){return brand; } public void setbrand(string brand){this.brand = brand; } public string getEnginenum(){return enginenum; } public void setenginenum(string enginenum){this.enginenum = enginenum; } public string getState(){return state; } public void setState(string state){this.state = state; } public string getRemarks(){return remarks; } public void setRemarks(String remarks){this.remarks = remarks; }}6.3getConn.javaプログラムリスト:
パッケージcom.cdd.util; import java.sql。*; public class getConn {static {try {class.forname( "com.mysql.jdbc.driver"); //静的ブロックにデータベースドライバーのロードを実装} catch(classNotFoundException E){e.printStackTrace(); }} public connection getConn(){接続接続= null; string url = "jdbc:mysql:// localhost:3306/oa";文字列username = "root";文字列password = "1120"; try {connection = drivermanager.getConnection(url、username、password); system.out.println( "ok"); } catch(sqlexception e){// todo auto-enerated catch block e.printstacktrace(); }接続を返します。 } public static void main(string [] args){getConn getConn = new getConn(); getConn.getConn(); }}6.4paginationutil.javaプログラムリスト:
パッケージcom.cdd.util; import java.util。*; import java.sql。接続conn = getConn.getConn(); // public List findGrade(int page、int pagesize){string strsql = "select * from car order by id lime" +(page -1) * pagesize + "、" + pagesize + ""; // sql queryステートメントステートメントpstmt = nullを定義します。結果rs = null; //クエリ結果を定義するオブジェクトリストlstlist = new ArrayList(); //コレクションオブジェクトを定義する{pstmt = conn.createStatement(); rs = pstmt.executequery(strsql); //クエリステートメントを実行します(rs.next()){//クエリ結果を介してループセットカーカー= new car(); // car.setid(rs.getString( "id"))を作成します。 car.setName(rs.getString( "name")); car.setbrand(rs.getString( "brand")); car.SetEnginenum(rs.getString( "enginenum")); car.setState(rs.getString( "state")); car.setRemarks(rs.getString( "remarks")); lstlist.add(car); //コレクションにオブジェクトを追加}} catch(例外e){e.printstacktrace(); }最後に{try {if(pstmt!= null){rs.Close(); pstmt.close(); }} catch(例外e){e.printstacktrace(); }} return lstlist; //クエリコレクションオブジェクトを返します}/ ** * * @paramページページ * @paramページ@paramページごとに表示されるレコードの数 * @return return result set */ public resultSet findOrder(int page、int pagesize){string strsql = "select * select * select by id lime" +(page -1) * pagesize + "、" + pagesize + "; // sql queryステートメントステートメントpstmt = nullを定義します。結果rs = null; // query query result set object try {pstmt = conn.createStatement(); rs = pstmt.executequery(strsql); // queryステートメントを実行} catch(例外e){e.printstacktrace(); }最後に{try {if(pstmt!= null){rs.Close(); pstmt.close(); }} catch(例外e){e.printstacktrace(); }} rsを返します。 //結果を返します} public int allpage(int pagesize){int allp = 0; try {ステートメントpstmt = conn.createstatement(); pstmt.execute( "CAR"を選択する(*)を選択 ");結果rs = pstmt.getResultset(); System.out.print( "00"); rs.next(); int all = rs.getint(1); System.out.print(all); allp =(all -1) / pagesize + 1; System.out.println(allp); } catch(sqlexception e){e.printstacktrace(); } allpを返します。 } public static void main(string [] args){paginationutil pageinationutil = new paginationutil();リストリスト= pageinationutil.findgrade(2、6); for(int i = 0; i <list.size(); i ++){car car =(car)list.get(i); System.out.println(car.getId() + "" + car.getName()); }}}6.5index.jspプログラムリスト:
<%@ページ言語= "java" import = "java.util。*、com.cdd.util。*;" PageEncoding = "gbk"%> <%string path = request.getContextPath(); string basepath = request.getscheme() + "://" + request.getServername() + ":" + request.getServerport() + path + "/";%> <!<!<!<!<! <Title>私のjsp 'index.jsp'開始ページ</title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0" 0 " content = "keyword1、keyword2、keyword3"> <meta http-equiv = "content =" this is my page "> <! - <link rel =" styleSheet "type =" text/css "href =" styles.css "> - > </head> <body> <h5> bear behil displaine </h5> <table < bordercolor = "#cc00cc"> <tr> <td>ナンバープレート番号</td> <td>車両名</td> <td>ブランド</td> <td>エンジン番号</td> </td> </tr> < int pageno = 0; if(request.getParameter( "no")== null){pageno = 1; } else {pageno = integer.parseint(request.getParameter( "no")); }リストcc = paginationutil.findgrade(pageno、3); iterator i = cc.iterator(); while(i.hasnext()){car car =(car)i.next(); out.print( "<tr> <td>" + car.getid() + "</td>" + "<td>" + car.getName() + "</td>" + "<td>" + car.getbrand() + "</td>" + "<td>" + car.getennenum( } int all = paginationutil.allpage(3); %> </table> <center>合計<%= all%>ページ、現在のページは<%= pageno%> page <%if(pageno> 1){%> <a href = "index.jsp?no = <%= pageno -1%>">前のページ</a> <%}%> href = "index.jsp?no = <%= pageno + 1%>">次のページ</a> <%}%> </center> </body> </html>6.6アクセスアドレス:
http:// x-pc:8080/paging/index.jsp
6.7実行結果のスクリーンショット:
7。冬眠ページネーション
7.1HQLページネーション
HQLは、主にSETFIRSTRESULT()メソッドとSetMaxResults()メソッドを介してデータのページングを実装しています。
(1)SETFIRSTRESULT(INT INDEX)メソッドを使用してデータ開始インデックス位置を取得し、インデックスの位置は0から始まります。
(2)setMaxResults(int量)メソッドを使用して、毎回ロードされたレコードの最大数を計算します。デフォルトでは、セット開始インデックス位置から最後までです。
例:インデックスの位置2から5つのレコードを取得する
クエリq = session.createquery( "form car"); q.setfirstreSult(2); q.setMaxResults(5);
7.2QBCページネーション
例:インデックスの位置2から5つのレコードを取得する
基準c = session.createcriteria( "form car"); c.setfirstreSult(2); c.setMaxResults(5);
7.3データページング方法:
/***ページクエリにHQLステートメントを使用* @param hql hqlステートメントクエリを必要とする* @param offset first record index* @paramページ@paramページ @@return現在のページのすべてのレコード*/パブリックリストfindbypage(最終文字列hql、最終的なintオフセット、最終的なintページバック=ハイバーのリストを介した[最終的なint intecallバック] = execut gethibernateTemplate().executefind(new hibernatecallback(){// hibernatecallbackインターフェイスパブリックオブジェクトdoinhibernate(セッションセッション)で実装する必要があるメソッドは、冬眠exceptionsをスローします{//パジネートのパジネートquaryリスト=セッション(hql)。 .setMaxResults(Pagesize)。 return list;}/***ページクエリにHQLステートメントを使用* @param hql hqlステートメントをクエリにする必要がある* @param値@param値hqlが渡す必要があるパラメーターを持っている場合、@param offset in first record index* @param page firt firt firt fist exturn first recurn first pageの数に渡された@param offset in first record index* @param offsse FindBypage(最終文字列HQL、最終オブジェクト値、最終的なintオフセット、最終intページサイズ){// hibernatecallbackオブジェクトリスト= gethibernateTemplate()executefind().executefind(){//セッションを実装するために実装する必要がある方法(// hibernatecallback interface interface interface interface interface interface interface interface interface interface interface interface interface interface interface interface interface) sqlexception {// Hibernate query list result.createquery(hql)// hql statement.setparameter(0、value).setfirsterult(offset)。 return list;}/***ページネーションクエリにHQLステートメントを使用* @param hql hqlステートメントをクエリする必要がある* @param値hqlが渡される複数のパラメーターがある場合、値はhql* @param offset index* @param offsize in first eductun nuber esturn firt firt nuble first recordのhql* @param offsse findBypage(最終文字列HQL、最終オブジェクト[]値、最終的なintオフセット、最終的なintページサイズ){// hibernatecallbackオブジェクトリスト= gethibernateTemplate().executefind(新しいhibernatecallback(){//セッションを実装するために実装するために実装する必要がある方法(//パブリックオブジェクトを実装する必要がある) HibernateException、sqlexception {// Hibernate Query Query Query = session(hql); .setMaxResults(Pagesize)。返品リスト;}この記事の説明が、Hibernate Frameworkに基づいた全員のJavaプログラミングに役立つことを願っています。