Baru -baru ini, perusahaan perlu melakukan fungsi halaman alarm, yang membutuhkan pagination. Setelah memeriksa banyak informasi, ditemukan bahwa PageHelper lebih cocok.
Oleh karena itu, saya menulis tutorial tentang penggunaan PageHelper mulai dari awal, dan juga merekam apa yang telah saya sibuk selama sehari.
1. Pertama, Anda perlu menambahkan ketergantungan PageHelper dalam proyek. Di sini saya menambahkannya dengan Maven.
<dependency> <GroupId> com.github.pagehelper </groupid> <ArTifactId> PageHelper </RiTtifacTID> <Version> 4.1.6 </version> </dependency>
2. Tambahkan konfigurasi pageHelper di file konfigurasi mybatis
<Configuration> <Plugin> <!-com.github.pagehelper adalah nama paket di mana kelas pageHelper berada-> <plugin interceptor = "com.github.pagehelper.pagehelper"> <!-Parameter ini dapat ditetapkan tanpa pengaturan dalam versi 4.0.0 -------Parameter ini salah-> akan ditetapkan tanpa pengaturan pada versi 4.0.0 ---- Parameter ini false--Parameter ini. Nomor Halaman Pagenum-> <!-Efeknya sama dengan pagenum di startpage-> <name properti = "offsetaspagenum" value = "true"/> <!-parameter ini default ke false-> <!-saat diatur ke true, count query akan dilakukan menggunakan rowbounds pagination-> <name properti = "rowboundswswswwo." pageSize=0 or RowBounds.limit = 0, all results will be queryed --> <!-- (Equivalent to the fact that the page query is not executed, but the result is still Page type) --> <property name="pageSizeZero" value="true"/> <!-- Version 3.3.0 is available - paging parameters are rationalized, false is disabled by default --> <!-- When rationalization is enabled, if Pagenum <1 akan menanyakan halaman pertama, jika halaman pagenum> akan menanyakan halaman terakhir-> <!-Ketika rasionalisasi dinonaktifkan, jika halaman pagenum <1 atau pagenum> akan mengembalikan data kosong-> <nama properti = parameter "nilai =" true "/> <!-Versi 3.5.0 tersedia-untuk mendukung mawah" nilai "(true"/> <!-Versi 3.5.0 tersedia-untuk mendukung mawah Awal "(TRUE"/> <!-Versi 3.5.0 tersedia-untuk mendukung Mulai Pamar = "TRUE"/> <!-Versi 3.5.0 tersedia-untuk mendukung Mulai Pamar "(true") <!-Versi 3.5. Pemetaan parameter untuk mendapatkan nilai dari peta atau servletRequest-> <!-Anda dapat mengkonfigurasi pagenum, halaman, menghitung, halamanzerzero, wajar, memesan, dan tidak mengkonfigurasi nilai default untuk pemetaan-> <!-jika Anda tidak memahami makna ini, jangan salin konfigurasi dengan santai-> <!-<nama properti = "pagar =; Supports passing paging parameters through Mapper interface parameters --> <property name="supportMethodsArguments" value="true"/> <!-- always return PageInfo type, check check whether the return type is PageInfo, and none returns Page --> <property name="returnPageInfo" value="check"/> </plugin> </plugins> </configuration>
3. Tambahkan kelas PageBean untuk menyimpan informasi paged
Public Class PageBean <T> mengimplementasikan serializable {private static final long serialversionuid = 1l; Total panjang pribadi; // Jumlah Total Catatan Daftar Pribadi <T> Daftar; // Hasil Set Private Int Pagenum; // berapa halaman halaman int swasta; // Jumlah catatan per halaman halaman int pribadi; // Jumlah total halaman ukuran int pribadi; // num dari halaman saat ini <= halamanzeze pageBean publik (daftar <T> Daftar) {if (daftar contoh halaman) {halaman <T> halaman = (halaman <T>) Daftar; this.pagenum = page.getPagenum (); this.pagesize = page.getPageSize (); this.total = page.getTotal (); this.pages = page.getPages (); this.list = halaman; this.size = page.size (); }} public long getTotal () {return total; } public void setTotal (total panjang) {this.total = total; } Daftar Publik <T> getList () {daftar kembali; } public void setList (Daftar <T> Daftar) {this.list = daftar; } public int getSize () {ukuran pengembalian; } public void setSize (int ixe) {this.size = size; } public int getPagenum () {return pagenum; } public void setPagenum (int pagenum) {this.pagenum = pagenum; } public int getPageSize () {return pageSize; } public void setPagesize (int pageSize) {this.pagesize = pageSize; } public int getPages () {return halaman; } public void setPages (int halaman) {this.pages = halaman; }}Berikut ini adalah kode logika bisnis
4. Pertama, mulailah dari file mapper.xml, mengoperasikan SQL database, dan cari tahu data yang kita butuhkan
<select id="selectallList" parameterType="com.alarm.bean.AlarmParamModel" resultMap="AlarmMap"> select message_id, seqnum, message_type, process_status, distribution_status, processor, occur_time, close_time, system_id, group_id, warning_level, message_content from td_alarm_info </select>
5. Metode Antarmuka Mapper
Daftar Publik <Allarparammodel> SelectAllList (Model AlarmParammodel);
6. Metode Antarmuka Layanan
Datagrid SelectAllList (Model AlarmParammodel, int pagenum, int pageSize);
7. Kelas Implementasi Layanan
Penting untuk dicatat di sini bahwa itu adalah logika utama pagination. Pagenum mewakili nomor halaman, halaman mewakili jumlah halaman yang ditampilkan, metode startpag adalah halaman awal, metode orderby adalah untuk mengurutkan data sesuai dengan bidang tertentu, di sini saya menggunakan urutan penurunan occr_time (desc)
Publik Datagrid SelectAllList (AlarmParammodel Model, int pagenum, int pageSize) {pageHelper.startpage (pagenum, pagesize); PageHelper.orderby ("wesensies_time desc"); Daftar <SlarmParammodel> Daftar = this.AlarmMgrMapper.selectAllList (model); PageInfo <All alarmparammodel> pageInfo = pageInfo baru <IlalSparammodel> (daftar); Datagrid datagrid = datagrid baru (pageInfo.getTotal (), pageInfo.getList ()); mengembalikan datagrid; }8. Saya perhatikan bahwa saya menggunakan kelas datagrid di sini, yang merupakan kelas yang digunakan untuk meneruskan data ke meja depan, termasuk total (total) dan baris (data)
Datagrid kelas publik {private long total; Baris Daftar Pribadi = Daftar ArrayList baru <> (); datagrid publik () {super (); } public datagrid (total total, daftar baris) {super (); this.total = total; this.rows = baris; } public long getTotal () {return total; } public void setTotal (total panjang) {this.total = total; } daftar publik getRows () {return rows; } public void setRows (daftar baris) {this.rows = baris; }}9. Mulailah menulis lapisan pengontrol dan panggil metode yang saya tulis sebelumnya
Perlu dicatat di sini bahwa offset dan batas adalah nomor halaman yang dikirim dari meja depan dan jumlah halaman yang ditampilkan per halaman. Berbeda dari offset dan batas bootstraptable, offset mewakili offset, yaitu, jika 10 lembar data ditampilkan per halaman, offset yang diwakili oleh halaman kedua dalam bootstrap adalah 10, dan halaman pertama dan halaman ketiga masing -masing 0 dan 20. Dan offset saya di sini mengacu pada pagenum.
@RequestMapping (value = "/alarmInfo/list", method = {requestMethod.get, requestMethod.post}) @ResponseBody datagrid datagrid alarmInfo (alarmparammodel model, @requestParam (value = "offset", defaultValue = "0" @RequestParam (value = "limit", defaultValue = "10", wajib = false) integer pageSize) {datagrid datagrid = this.AlarmMgrService.selectAllList (model, pagenum, pagesize); mengembalikan datagrid; }10. Sekarang permintaan meja depan bisa mendapatkan data backend dan menyuruhnya. Saya akan memposting konfigurasi tabel bootstrap meja depan saya.
$('#tb_departments').bootstrapTable({ url: 'http://10.1.234.134:8088/api/AlarmInfo/list', //Request URL (*) method: 'get', //Request method (*) striped: false, //Whether to display line interval color cache: false, //Whether to use cache, default is true, so in Umum, properti ini perlu ditetapkan (*) pagination: true, // apakah akan menampilkan paging (*) hanyainfopaginasi: true, // diatur ke true untuk menampilkan hanya jumlah total data, bukan tombol pagination. Sidepagination: "Server", // Metode Pagination: Pagination Klien Klien, Server Server Pagination (*) Pagenumber: 1, // Inisialisasi halaman pertama yang memuat, halaman pertama halaman: 10, // Jumlah baris per halaman (*) Pencarian: [10, 25, 100, will not enter the server, so I personally feel that it is of little significance to strictSearch: true, showColumns: false, //Does all columns be displayed showRefresh: false, //Does the refresh button display minimumCountColumns: 2, //The minimum number of columns allowed clickToSelect: true, //Where to enable click to select row checkboxHeader: true, //Add height: 500, //Line height, Jika atribut tinggi tidak diatur, tabel secara otomatis merasakan ketinggian tabel sesuai dengan jumlah catatan, unikid: "id", // Identifikasi unik dari setiap baris umumnya adalah kolom kunci utama ShowToggle: false, // melakukan tombol sakelar untuk tampilan terperinci dan tampilan daftar cardview: false, // melakukan detail tampilan detail: detail informasi, detail informasi detail, detail. PaginationDetailHalign: "Benar", Saya tidak menggunakan tombol paging yang datang dengan bootstrap. Saya menulis grup tombol sendiri di JQ. Pada artikel berikutnya, saya akan memposting kode tombol, sehingga dapat disesuaikan dengan tingkat yang lebih tinggi ~ Anda juga dapat menggunakan tombol paging dengan sub-band bootstraptable dan cukup ubah konfigurasi.
Di atas adalah penjelasan terperinci tentang pagination springmvc+mybatis+pageHelper yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!