이 기사에서는 최대 절전 모드 프레임 워크 데이터 페이징 기술에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 데이터 페이징 메커니즘의 기본 아이디어 :
(1) 기록 범위를 결정, 즉 실제 상황에 따라 결정할 수있는 각 페이지에 표시된 레코드 수를 결정합니다.
(2) 총 레코드 수를 얻으십시오. 즉, 총 레코드 수를 페이지에 표시 할 수 있습니다. 목적은이 숫자에 따라 총 분포 수를 결정하는 것입니다.
(3) 페이징 후 총 페이지 수를 결정합니다. "총 페이지 수 = (총 레코드 수 -1) / 페이지에 표시된 레코드 수 + 1"을 사용할 수 있습니다.
(4) 현재 페이지 수에 따라 데이터를 표시합니다. 페이지 수가 1보다 작 으면 1이 동일합니다. 최대 페이지 수보다 큰 경우 최대 페이지 수와 동일합니다.
(5) 루프 명령문 분포를 통해 쿼리 결과를 표시합니다.
2. 이전 N 레코드 받기 :
SQL 구문 :
Top Nfrom 테이블 where ... 주문 : ...
예를 들어 : 처음 4 개의 레코드를 받으십시오
자동차에서 상위 4 *를 선택하십시오
3. 페이징 데이터 얻기 :
String sql = "id nontin (상단을 선택한 page+”* pagesize+"* pagesize+"* pagesize+"id asc에서 id asc)에서 id asc로 주문).
매개 변수는 다음과 같습니다.
Pagesize : 페이지 당 표시되는 레코드 수
페이지 : 현재 페이지 수
자동차 : 데이터 테이블 이름
4. MYSQL 데이터베이스 페이지 매김
MySQL 데이터베이스는 제한 기능을 제공하여 쉽게 데이터 페이징을 허용합니다.
한계 함수는 선택 쿼리 문으로 반환 된 행 수를 제한하는 데 사용됩니다.
문법:
테이블 where에서 ... 주문별로 ... 제한 [오프셋], 행을 선택하십시오
매개 변수는 다음과 같습니다.
오프셋 : 반환 할 첫 번째 행의 오프셋을 지정합니다. 시작 라인의 오프셋은 0입니다. 선택 사항입니다.
행 : 반환 된 행의 수를 지정합니다.
5.mysql은 페이지 진화 데이터를 얻습니다
/**** @param page 페이지에 따라 표시되는 페이지* @param page records afies records* @return return result set*/public resultset findorder (int page, int pagesize) {string strsql = "select* id limits" + (page -1)* pagesize + "," + pagesize + ""; // SQL 쿼리 문을 정의합니다. 문장 pstmt = null; resultSet rs = null; // 쿼리 결과 정의 결과 세트 객체 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 (); }} return rs; // 반환 결과 세트}6. 데이터 페이징 예제
6.1PIGING 프로젝트 구조 :
6.2car.java 프로그램 목록 :
패키지 com.cdd.util;/** * 차량 정보 * @author xu qiao hui * */public class car {private string id; 개인 문자열 이름 ;; 개인 문자열 브랜드; 개인 문자열 enginenum; 개인 문자열 상태; 개인 문자열 비고; 공공 차 (int size) {} public car () {} public car (문자열 ID, 문자열 이름, 문자열 브랜드, 문자열 enginenum, 문자열 상태, 문자열 설명) {super (); id = id; this.name = 이름; this.brand = 브랜드; this.enginenum = enginenum; this.state = state; this.remarks = 비고; } public String getId () {return id; } public void setId (String id) {id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public String getBrand () {반환 브랜드; } public void setBrand (문자열 브랜드) {this.brand = 브랜드; } public String getEnginenum () {return enginenum; } public void setEnginenum (String Enginenum) {this.enginenum = enginenum; } public String getState () {return state; } public void setstate (문자열 상태) {this.state = state; } public string getRemarks () {return wartings; } public void setRemarks (문자열 비고) {this.remarks = 비고; }}6.3getConn.java 프로그램 목록 :
package 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 () {Connection Connection = NULL; 문자열 URL = "jdbc : mysql : // localhost : 3306/oa"; 문자열 사용자 이름 = "루트"; 문자열 암호 = "1120"; try {connection = drivermanager.getConnection (url, username, password); System.out.println ( "OK"); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 반환 연결; } public static void main (String [] args) {getConn getConn = new getConn (); getConn.getConn (); }}6.4paginationutil.java 프로그램 목록 :
package com.cdd.util; import java.util.*; import java.sql.*; public class paginationutil {getconn getconn = new getconn (); Connection Conn = getConn.getConn (); // public list findgrade (int page, int pagesize) {string strsql = "id wher id 한계별로 * 선택 * pagesize +", " + pagesize +" "; // SQL 쿼리 문을 정의합니다. 문장 pstmt = null; resultSet rs = null; // 쿼리 결과 세트 객체 목록을 정의합니다. lstlist = new ArrayList (); // 수집 객체 정의 시도 {pstmt = conn.createstatement (); rs = pstmt.executeQuery (strsql); // Query 문을 실행합니다. // 자동차 자동차 생성. car.setName (rs.getString ( "name")); car.setbrand (Rs.getstring ( "brand")); car.setenginenum (Rs.getstring ( "enginenum")); car.setstate (rs.getstring ( "state")); CAR.SETREMARKS (Rs.GetString ( "비고")); lstlist.add (자동차); // 컬렉션에 객체를 추가}} catch (예외 e) {e.printstacktrace (); } 마침내 {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (예외 e) {e.printstacktrace (); }} return lstlist; // Query Collection Object}/ ** * * @param 페이지 페이지 @param pages 페이지 당 표시되는 레코드 수치 * @return return result set */ public resultset findorder (int page, int pagesize) {string strsql = "select * id limits" + (page -1) * pagesize + "," + pagesize + ""; // SQL 쿼리 문을 정의합니다. 문장 pstmt = null; resultSet rs = null; // 쿼리 결과 정의 결과 세트 객체 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 (); }} return rs; // 결과 세트를 반환} public int allpage (int pagesize) {int allp = 0; try {state pstmt = conn.createstatement (); pstmt.execute ( "자동차에서 count (*) 선택"); resultet rs = pstmt.getresultset (); System.out.print ( "00"); rs.next (); int all = rs.getint (1); System.out.print (모두); allp = (모두 -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 프로그램 목록 :
<%@ page language = "java"import = "java.util.*, com.cdd.util.*;" PageEncoding = "gbk"%> <% 문자열 path = request.getContextPath (); String BasePath = request.getScheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/";%> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <head> <href = "> <title> my jsp 'index.jsp'시작 페이지 </title> <meta http-equiv = "pragma"content = "no-cache"> <meta http-equiv = "cache-control"content = "no-cache"> <meta http-equiv = "http-equiv ="content = "> <meta http- equiv ="keywords. content = "keyword1, keyword2, keyword3"> <meta http-equiv = "description"content = "이것은 내 페이지입니다"> <!-<link rel = "stylesheet"type = "text/css"href = "styles.css">-> </head> <bod> <center> <h5> 차량 정보 pagination display </h5> </h5> </h5>. BorderColor = "#cc00cc"> <tr> <td> 번호판 번호 </td> <td> 차량 이름 </td> <td> 브랜드 </td> <td> 엔진 번호 </td> </tr> <% paginationutil paginationutil = 새로운 PaginationUtil (); int pageno = 0; if (request.getParameter ( "no") == null) {pageno = 1; } else {pageno = integer.parseint (request.getParameter ( "no")); } list cc = paginationutil.findgrade (pageno, 3); 반복자 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.getEnginenum () </td> </td>"); } int all = paginationutil.allpage (3); %>. + 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 fumer) 메소드는 매번로드 된 최대 레코드 수를 계산하는 데 사용되며 기본적으로 세트 시작 인덱스 위치에서 마지막까지입니다.
예 : 인덱스 위치 2에서 시작하는 5 개의 레코드 검색 2
query q = session.createrecer ( "Form Car"); Q.SetFirstresult (2); Q.SetMaxResults (5);
7.2QBC Pagination
예 : 인덱스 위치 2에서 시작하는 5 개의 레코드 검색 2
기준 c = session.createCriteria ( "Form Car"); C.SetFirstresult (2); C.SetMaxResults (5);
7.3 데이터 페이징 방법 :
/*** 페이지 query* @param hql HQL 문을 사용하여 query* @param hql hql statement에 HQL 명령문을 사용하십시오. gethibernateTemplate () .ExecuteFind (New HiberNateCallback () {// HiberNateCallback 인터페이스 공공 개체 DoinHibernate (세션 세션)에서 구현되어야하는 메소드는 최대 절전 모드 exception, sqlexception {// execute execute pagination query list = session.createrecer (hitql). .SetMaxResults (pagesize) .list (); 반환 목록;}/*** 페이지 query* @param HQL HQL 문에 HQL 명령문을 사용하여 쿼리 해야하는* @param 값을 전달 해야하는 매개 변수가있는 경우 값은 @param 오프셋에 전달되는 HQL 문의 매개 변수입니다. findBypage (최종 문자열 HQL, 최종 객체 값, 최종 int 오프셋, 최종 int pagesize) {// hibernatecallback 객체 목록 목록을 통해 쿼리를 실행하십시오. sqlexection {// hql station.setparameter (0, value)에 대한 매개 변수를 일시 중지합니다. 반환 목록;}/*** Pagination Query에 HQL 명령문 사용* @Param HQL HQL 문을 사용해야합니다. 문자열 HQL, 최종 객체 [] 값, 최종 int 오프셋, 최종 int pagesize) {// hibernatecallback 객체 목록 목록을 통해 쿼리 실행 = gethibernateTemplate () .ExecuteFind (새로운 HiberNateCallback () {// hibernateCallback (세션 세션)을 구현하기 위해 구현 해야하는 메소드 (// hibernate sedession) // Query Query Query = CreateRegry (HQL)를 일시 중지합니다. }); 반환 목록;}이 기사의 설명이 최대 절전 모드 프레임 워크를 기반으로 한 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.