Artikel ini menjelaskan teknologi paging data kerangka kerja Hibernate. Bagikan untuk referensi Anda, sebagai berikut:
1. Ide Dasar Mekanisme Paging Data:
(1) Tentukan rentang perekaman, yaitu, tentukan jumlah catatan yang ditampilkan pada setiap halaman, yang dapat ditentukan sesuai dengan situasi aktual.
(2) Dapatkan jumlah total catatan, yaitu, dapatkan jumlah total catatan yang akan ditampilkan pada halaman. Tujuannya adalah untuk menentukan jumlah total distribusi berdasarkan nomor ini.
(3) Tentukan jumlah total halaman setelah paging. Anda dapat menggunakan rumus: "Jumlah total halaman = (jumlah total catatan - 1) / jumlah catatan yang ditampilkan per halaman + 1".
(4) Menampilkan data sesuai dengan jumlah halaman saat ini. Jika jumlah halaman kurang dari 1, itu dibuat sama dengan 1; Jika lebih besar dari jumlah maksimum halaman, itu dibuat sama dengan jumlah maksimum halaman.
(5) Tampilkan hasil kueri melalui dan sementara distribusi pernyataan loop.
2. Dapatkan catatan N sebelumnya:
Sintaks SQL:
Pilih Top Nfrom Table Where ... Pesan dengan ...
Misalnya: Dapatkan 4 catatan pertama
Pilih Top 4 * dari mobil
3. Dapatkan data paging:
String sql = "pilih atas"+halaman+"* dari mobil di mana id notin (pilih atas"+(halaman-1)* halaman+"id dari pesanan mobil oleh id asc) pesanan oleh id asc
Parameternya adalah sebagai berikut:
Halaman: Jumlah catatan yang ditampilkan per halaman
Halaman: Hitung Halaman Saat Ini
Mobil: Nama Tabel Data
4.Mysql Pagination Database
Basis data MySQL menyediakan fungsi batas, yang memungkinkan paging data yang mudah.
Fungsi batas digunakan untuk membatasi jumlah baris yang dikembalikan oleh pernyataan kueri terpilih.
tata bahasa:
Pilih ... Dari Tablewhere ... Pesan dengan ... Batasi [Offset], Baris
Parameternya adalah sebagai berikut:
Offset: Menentukan offset baris pertama yang akan dikembalikan. Offset dari garis start adalah 0. adalah opsional.
Baris: Menentukan jumlah baris yang dikembalikan.
5.mysql mendapat data paginated
/**** @param Halaman Halaman mana* @param halaman jumlah catatan yang ditampilkan per halaman* @return Return hasil set*/hasil publik findorder (int halaman, int pageSize) {string strsql = "pilih* dari pesanan mobil dengan batasan id" + (halaman - 1)* halaman + "," + pageSize + ""; // Tentukan Pernyataan Pernyataan Kueri SQL PSTMT = NULL; Hasil rs = null; // Tentukan hasil query atur objek coba {pstmt = conn.createStatement (); RS = PSTMT.ExecuteQuery (strsql); // jalankan pernyataan kueri} catch (pengecualian e) {e.printstacktrace (); } akhirnya {coba {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exception e) {e.printstacktrace (); }} return rs; // kembalikan set hasil}6. Contoh Paging Data
6.1 Struktur Proyek:
Daftar program 6.2car.java:
Paket com.cdd.util;/** * Informasi kendaraan * @author xu qiao hui * */mobil kelas publik {private string id; nama string pribadi ;; Merek string pribadi; Private String Enginenum; keadaan string pribadi; Keterangan String Pribadi; Mobil publik (ukuran int) {} public car () {} mobil publik (ID string, nama string, merek string, string enginenum, status string, komentar string) {super (); Id = id; this.name = name; this.brand = merek; this.enginenum = Enginenum; this.state = state; this.remarks = komentar; } public String getId () {return id; } public void setId (string id) {id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } public String getBrand () {return brand; } public void setBrand (string brand) {this.brand = brand; } string publik getenginenum () {return enginenum; } public void setenginenum (String Enginenum) {this.enginenum = Enginenum; } public String getState () {return state; } public void setState (state string) {this.state = state; } public string getRemarks () {return ucapan; } public void setRemarks (Keterangan String) {this.remarks = komentar; }}6.3GetConn.java Daftar Program:
paket com.cdd.util; import java.sql.*; kelas publik getConn {static {try {class.forname ("com.mysql.jdbc.driver"); // Implementasikan driver basis data pemuatan di blok statis} catch (classnotfoundException e) {e.printstacktrace (); }} koneksi publik getConn () {koneksi koneksi = null; String url = "jdbc: mysql: // localhost: 3306/oa"; String username = "root"; String password = "1120"; coba {connection = driverManager.getConnection (url, nama pengguna, kata sandi); System.out.println ("OK"); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); } return connection; } public static void main (string [] args) {getConn getConn = new getConn (); getConn.getConn (); }}6.4paginationutil.java Daftar Program:
Paket com.cdd.util; import java.util.*; import java.sql.*; paginationutil kelas publik {getConn getConn = baru getConn (); Koneksi conn = getConn.getConn (); // Daftar Publik FindGrade (halaman int, int pageSize) {string strsql = "SELECT * Dari pesanan mobil dengan batas ID" + (halaman - 1) * pagesize + "," + pagesze + ""; // Tentukan Pernyataan Pernyataan Kueri SQL PSTMT = NULL; Hasil rs = null; // Tentukan Hasil Kueri Setel Daftar Objek LSTList = ArrayList baru (); // Tentukan objek koleksi coba {pstmt = conn.createStatement (); RS = PSTMT.ExecuteQuery (strsql); // Jalankan pernyataan kueri while (rs.next ()) {// loop melalui hasil kueri set mobil = mobil baru (); // buat mobil car.setid (rs.getString ("id")); car.setname (rs.getString ("name")); car.setBrand (rs.getString ("merek")); car.setenginenum (rs.getString ("enginenum")); car.setState (rs.getString ("state")); car.setremarks (rs.getString ("komentar")); lstlist.add (mobil); // tambahkan objek ke koleksi}} catch (Exception e) {e.printstacktrace (); } akhirnya {coba {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exception e) {e.printstacktrace (); }} return lstlist; // Return Query Collection Object}/ ** * * @param Halaman Halaman mana * @param halaman jumlah catatan yang ditampilkan per halaman * @return Return hasil set */ Public HasilSet FindOrder (int halaman, int halaman) {string strsql = "Pilih * dari pesanan mobil dengan batas ID" + (halaman - 1) * FageSize + "," + PageSize + ""; " // Tentukan Pernyataan Pernyataan Kueri SQL PSTMT = NULL; Hasil rs = null; // Tentukan hasil query atur objek coba {pstmt = conn.createStatement (); RS = PSTMT.ExecuteQuery (strsql); // jalankan pernyataan kueri} catch (pengecualian e) {e.printstacktrace (); } akhirnya {coba {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exception e) {e.printstacktrace (); }} return rs; // kembalikan set hasil} public int allpage (int pageSize) {int allp = 0; coba {pernyataan pstmt = conn.createestatement (); PSTMT.Execute ("SELECT COUNT (*) dari CAR"); Hasil rs = pstmt.getResultSet (); System.out.print ("00"); rs.next (); int all = rs.getint (1); System.out.print (semua); allp = (semua - 1) / halaman + 1; System.out.println (allp); } catch (sqlexception e) {e.printstacktrace (); } return allp; } public static void main (string [] args) {paginationutil pageinationutil = new paginationutil (); Daftar daftar = pageinationutil.findgrade (2, 6); untuk (int i = 0; i <list.size (); i ++) {car car = (car) list.get (i); System.out.println (car.getId () + "" + car.getName ()); }}}Daftar program 6.5Index.jsp:
<%@ halaman bahasa = "java" import = "java.util.*, com.cdd.util.*;" pageEncoding = "gbk"%> <% string path = request.getContextPath (); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <center> <h5> Vehicle information pagination display</h5> </center> <table align="center" bordercolor = "#cc00cc"> <tr> <td> Nomor plat </td> <td> Nama kendaraan </td> <td> merek </td> <td> Nomor engine </td> </tr> <% paginationutil paginationutil = new paginationutil (); int pageno = 0; if (request.getParameter ("no") == null) {pageno = 1; } else {pageno = integer.parseint (request.getParameter ("no")); } Daftar 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.getEngineNum() + "</td></tr>"); } int all = paginationutil.allpage (3); %> </table> <center> Total <%=all%> pages, the current page is the <%=pageNo%> page<% if (pageNo > 1) { %> <a href="index.jsp?No=<%=pageNo - 1%>">Previous page</a> <% } %> <% if (pageNo < all) { %> <a href = "index.jsp? no = <%= pageno + 1%>"> halaman berikutnya </a> <%}%> </center> </body> </html>6.6 Alamat Akses:
http: // x-pc: 8080/paging/index.jsp
6.7 Tangkapan layar hasil berjalan:
7. Hibernate Pagination
7.1HQL Pagination
HQL terutama mengimplementasikan paging data melalui metode setFirStresult () dan metode setmaxResults ().
(1) Metode SetFirStresult (int index) digunakan untuk mengambil posisi indeks start data, dan posisi indeks dimulai pada 0.
(2) Metode setmaxResults (jumlah int) digunakan untuk menghitung jumlah maksimum catatan yang dimuat pada setiap waktu, dan secara default, itu dari posisi indeks start set ke yang terakhir.
Misalnya: Ambil 5 catatan mulai dari posisi indeks 2
Kueri q = session.createqueery ("bentuk mobil"); q.setFirstresult (2); q.setMaxResults (5);7.2QBC Pagination
Misalnya: Ambil 5 catatan mulai dari posisi indeks 2
Kriteria c = session.createCriteria ("bentuk mobil"); c.setFirstresult (2); c.setmaxResults (5);7.3 Metode Paging Data:
/*** Use hql statement for page query* @param hql hql statement that needs to be query* @param offset first record index* @param pageSize Number of records to be displayed per page* @return All records of the current page*/public List findByPage(final String hql, final int offset, final int pageSize){ //Execute query through a HibernateCallback object List list = gethibernateTemplate () .executEfind (hibernatecallback baru () {// metode yang harus diimplementasikan dalam antarmuka hibernatecallback objek publik doinhibernate (sesi sesi) melempar hibernateException, sqlexception {// hibernate pagination list query (sqlexception {// hibernate pagination list query.creatsception. .setMaxResults (halaman) .list (); Daftar pengembalian;}/*** Gunakan pernyataan HQL untuk kueri halaman* @param hql HQL Pernyataan yang perlu diminta* nilai @param jika HQL memiliki parameter yang perlu diteruskan, nilai adalah parameter dari pernyataan hql yang disahkan dalam* @param. findByPage(final String hql , final Object value , final int offset, final int pageSize){ //Execute query through a HibernateCallback object List list = getHibernateTemplate() .executeFind(new HibernateCallback() { //Methods that must be implemented to implement the HibernateCallback interface public Object doInHibernate(Session session) throws HibernateException, SQLException {// Jalankan Hasil Paginasi Hibernate Hasil = Sesi. daftar pengembalian;}/*** Gunakan pernyataan HQL untuk kueri pagination* @param hql hql pernyataan yang perlu ditanya* @param nilai jika hql memiliki beberapa parameter untuk disahkan, nilai -nilai adalah array parameter hql yang disahkan dalam hql* @param offset indeks pertama indeks* @param memberi catatan pada catatan. String hql, nilai objek akhir [], offset int final, final int pageSize) {// menjalankan kueri melalui daftar objek hibernateCallback = gethibernateTemplate () .executEfind (hibernateCallback new Hibernatexcept () {// Metode yang harus diimplementasikan untuk mengimplementasikan hibernateCallback public om -objek hibernatexcove doinxcove doinxcove doinxcove doinxcept doinyxcept doinyxcepten doinyback doinyback doinyback doin (hibernatexcept do. {// Jalankan kueri kueri pagination hibernate = sesi.creequery (hql); hasil pengembalian;}}); daftar pengembalian;}Saya berharap deskripsi dalam artikel ini akan membantu pemrograman Java semua orang berdasarkan kerangka hibernasi.