SpringBoot + mybatis 分頁查詢
com.github.pagehelper.PageHelper是一款好用的開源免費的Mybatis第三方分頁外掛。使用的時候,只要簡單配置,就可以在查詢語句之後得到所需的分頁資訊。
1:在 pom.xml 中引入依賴項。
<!-- 分頁 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependency>
這是一個基於maven 的專案,會自動匯入依賴包。
2:配置 mybatis 的配置檔案,使用 PageHelper 外掛
<plugins> <!-- com.github.pagehelper為PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> <!-- 該引數預設為false -->整體的mybatis 配置如下:<!-- 設定為true時,會將RowBounds第一個引數offset當成pageNum頁碼使用 --> <!-- 和startPage中的pageNum效果一樣--> <property name="offsetAsPageNum" value="true"/> <!-- 該引數預設為false --> <!-- 設定為true時,使用RowBounds分頁會進行count查詢 --> <property name="rowBoundsWithCount" value="true"/> <!-- 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 --> <!-- (相當於沒有執行分頁查詢,但是返回結果仍然是Page型別)--> <property name="pageSizeZero" value="true"/> <!-- 3.3.0版本可用 - 分頁引數合理化,預設false禁用 --> <!-- 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 --> <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空資料 --> <property name="reasonable" value="false"/> <!-- 3.5.0版本可用 - 為了支援startPage(Object params)方法 --> <!-- 增加了一個`params`引數來配置引數對映,用於從Map或ServletRequest中取值 --> <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置對映的用預設值 --> <!-- 不理解該含義的前提下,不要隨便複製該配置 --> <property name="params" value="pageNum=start;pageSize=limit;"/> <!-- always總是返回PageInfo型別,check檢查返回型別是否為PageInfo,none返回Page --> <property name="returnPageInfo" value="check"/> </plugin> </plugins>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties> <property name="dialect" value="mysql"/> </properties> <settings> <!-- 開啟駝峰匹配 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 這個配置使全域性的對映器啟用或禁用快取。系統預設值是true,設定只是為了展示出來 --> <setting name="cacheEnabled" value="true"/> <!-- 全域性啟用或禁用延遲載入。當禁用時,所有關聯物件都會即時載入。 系統預設值是true,設定只是為了展示出來 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 允許或不允許多種結果集從一個單獨的語句中返回(需要適合的驅動)。 系統預設值是true,設定只是為了展示出來 --> <setting name="multipleResultSetsEnabled" value="true"/> <!--使用列標籤代替列名。不同的驅動在這方便表現不同。參考驅動文件或充分測試兩種方法來決定所使用的驅動。 系統預設值是true,設定只是為了展示出來 --> <setting name="useColumnLabel" value="true"/> <!--允許 JDBC 支援生成的鍵。需要適合的驅動。如果設定為 true 則這個設定強制生成的鍵被使用,儘管一些驅動拒絕相容但仍然有效(比如 Derby)。 系統預設值是false,設定只是為了展示出來 --> <setting name="useGeneratedKeys" value="false"/> <!--配置預設的執行器。SIMPLE 執行器沒有什麼特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 系統預設值是SIMPLE,設定只是為了展示出來 --> <setting name="defaultExecutorType" value="SIMPLE"/> <!--設定超時時間,它決定驅動等待一個數據庫響應的時間。 系統預設值是null,設定只是為了展示出來 --> <setting name="defaultStatementTimeout" value="25000"/> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <plugins> <!-- com.github.pagehelper為PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> <!-- 該引數預設為false --> <!-- 設定為true時,會將RowBounds第一個引數offset當成pageNum頁碼使用 --> <!-- 和startPage中的pageNum效果一樣--> <property name="offsetAsPageNum" value="true"/> <!-- 該引數預設為false --> <!-- 設定為true時,使用RowBounds分頁會進行count查詢 --> <property name="rowBoundsWithCount" value="true"/> <!-- 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 --> <!-- (相當於沒有執行分頁查詢,但是返回結果仍然是Page型別)--> <property name="pageSizeZero" value="true"/> <!-- 3.3.0版本可用 - 分頁引數合理化,預設false禁用 --> <!-- 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 --> <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空資料 --> <property name="reasonable" value="false"/> <!-- 3.5.0版本可用 - 為了支援startPage(Object params)方法 --> <!-- 增加了一個`params`引數來配置引數對映,用於從Map或ServletRequest中取值 --> <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置對映的用預設值 --> <!-- 不理解該含義的前提下,不要隨便複製該配置 --> <property name="params" value="pageNum=start;pageSize=limit;"/> <!-- always總是返回PageInfo型別,check檢查返回型別是否為PageInfo,none返回Page --> <property name="returnPageInfo" value="check"/> </plugin> </plugins> </configuration>3:完成上述配置就可以使用了,是不是很屌?但是別高興太早,會有一些小的問題。
先看整長的程式碼:
PageHelper.startPage(currentpage,size); // 直接查詢 List<ADeviceModelEntityVo> modelVoList = deviceModelMapper.getModelByManuCode(code); PageInfo<ADeviceModelEntityVo> result = new PageInfo<ADeviceModelEntityVo>(modelVoList);PageHelper.startPage: 設定分頁資訊,currentpage:當前頁碼,size :每一頁顯示的資料條數
PageInfo: 是一個外掛類,可以將查詢到的資訊,轉換成所需要的分頁資訊。
PageInfo:裡面的屬性:
//當前頁
privateint pageNum;
//每頁的數量privateint pageSize;
//當前頁的數量privateint size;
//排序private String orderBy;
//由於startRow和endRow不常用,這裡說個具體的用法
//可以在頁面中"顯示startRow到endRow 共size條資料"
//當前頁面第一個元素在資料庫中的行號
privateint startRow;
//當前頁面最後一個元素在資料庫中的行號privateint endRow;
//總記錄數privatelong total;
//總頁數privateint pages;
//結果集private List<T> list;
//第一頁privateint firstPage;
//前一頁privateint prePage;
//下一頁privateint nextPage;
//最後一頁privateint lastPage;
//是否為第一頁privateboolean isFirstPage = false;
//是否為最後一頁privateboolean isLastPage = false;
//是否有前一頁privateboolean hasPreviousPage = false;
//是否有下一頁privateboolean hasNextPage = false;
//導航頁碼數privateint navigatePages;
//所有導航頁號privateint[] navigatepageNums;
會有一些小問題,小問題是什麼呢?看程式碼。
假如說在一個 service 裡面有兩個查詢語句,最後得到的想要的資訊就不是自己想要的分頁資訊。也就是說,如果使用 PageHelper做分頁查詢的話,一個service裡面只能有一個在後臺的查詢語句。
相關推薦
SpringBoot + mybatis 分頁查詢
com.github.pagehelper.PageHelper是一款好用的開源免費的Mybatis第三方分頁外掛。使用的時候,只要簡單配置,就可以在查詢語句之後得到所需的分頁資訊。 1:在 pom.
mybatis分頁查詢,SqlServer 2008 查詢速度很慢
com ima alt 分頁查詢 img bubuko .com nbsp ati 一個業務場景,需要進行union查詢: 查詢速度非常慢,大概要37秒: 直接復制sql在數據庫客戶端執行,速度很快,由此可知是mybatis的原因,在網上搜索,可以配置fetc
mybatis-分頁查詢學習筆記
mybatis-分頁查詢學習筆記 import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import cn.itcast
SpringBoot Mybatis 分頁插件PageHelper
.html bsp 插件 .cn .com mybatis In RM tle https://www.ciphermagic.cn/mybatis-page-2.html#Spring%E9%85%8D%E7%BD%AE%E6%96%8
springboot mybatis 分頁整合
not pri sql數據庫 cto can current map druid main spring boot 整合mybatis ,分兩塊mybatis 整合,分頁整合。 1.pom文件增加 <dependency>
mybatis分頁查詢需要注意的問題
一般對mybatis的分頁查詢的關鍵程式碼就兩行: #currentPage代表當前頁,pageSize代表每頁的行數 PageHelper.startPage(currentPage, pageSize); #查詢的語句 mapper.select(); 一般程式碼在走到mapper.sel
springboot jpa 分頁查詢(增刪改查)總結
springboot jpa 分頁查詢(增刪改查)總結 jpa 大白話可以把它理解為一個外掛,在開發過程中,目的在於可以提供你更加簡單的程式設計模型,簡單方便 。 &
springboot jpa 分頁查詢(增刪改查)整理
springboot jpa 分頁查詢(增刪改查)整理 jpa 大白話可以把它理解為一個外掛,在開發過程中,目的在於可以提供你更加簡單的程式設計模型,簡單方便 。 JPA框架中支援大資料集、事務、併發等容器級事務,使得 JPA 超越了簡
SpringBoot 之分頁查詢
前言 學習資料庫很久了,並且對於CRUD(增、刪、改、查)已經爛熟於心了,相信許多跟我一樣還天天對於資料庫的操作僅限於此的朋友們一定早已感到枯燥了,那麼我們趕緊進入話題,來談談分頁查詢的使用吧! (基本上是第一次寫部落格,有錯的或是言語不當的地方還望多多指教
mybatis 分頁查詢
<!-- 分頁查詢 --> <select id="datalistPage" parameterType="page" resultType="pd" useCache="false"> select *
Springboot+mybatis分頁
application.yml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource url: jd
Mybatis分頁查詢之pagehelper
引入pom依賴 <!--mybatis分頁查詢外掛--> <dependency> <groupId>com.github.pagehelper</groupId>
mybatis分頁查詢之sql server--mysql
在習慣了使用mysql進行資料操作後,突然轉到sql server,雖然說兩者在mybatis中的語法基本相同,很容易替換,但是,這也是最容易出問題的地方,因為往往我們會被這些些微的“不同”坑害。 今天這裡就分享一下mysql和sql s
Springboot整合mybatis及分頁查詢、定時任務)
整了一整天,看了一位前輩的部落格,在此基礎上加上本人的理解及創作,哪位前輩忘記了,望諒解!不多說,直接上程式碼。 以上是專案的整體結構,下面是pom.xml檔案資訊:<project xmlns="http://maven.apache.org/POM/4.0.0"
Layui+Springboot+Mybatis+Pagehelper實現條件分頁查詢
分頁查詢是Web專案中非常重要的一項,Mybatis對於條件分頁查詢有其天然優勢,動態sql的靈活運用使得sql語句變得簡潔,在本文中,使用Pagehelper分頁外掛並結合Mybatis逆向出的實體進行條件查詢。 首先,匯入Pagehelper依賴
springboot結合mybatis使用pageHelper插件進行分頁查詢
oca true else get -a lse enc executor map 1、pom相關依賴引入 <dependencies> <dependency> <groupId>org.springframewor
SpringBoot 使用 MyBatis 分頁插件 PageHelper 進行分頁查詢
還需要 user 業務 信息 同學 分頁查詢 pre github 使用 前言:本文檔使用的是 SpringBoot,如果是 Spring 還需要在 MyBatis 配置 xml 中配置攔截器,並且 PageHelper 是針對 MyBatis 的,MyBatis 的集成不
myBatis學習筆記(10)——使用攔截器實現分頁查詢
條件 iba execute rri itl alias property gen func 1. Page package com.sm.model; import java.util.List; public class Page<T&g
使用插件pagehelper在mybatis中實現分頁查詢
通過 否則 跟著 jar包 自動識別 lds equals 數值 可用 快速參考步驟: 1. 引入jar包 <dependency> <groupId>com.github.pagehelper</groupId> <a
Maven+Mybatis+Spring+SpringMVC實現分頁查詢
XML lec www tails odin build 效果 servle lpad 轉載:http://www.cnblogs.com/zhangtan/p/5846955.html 一、項目搭建 關於項目搭建,小寶鴿以前寫過一篇Spirng+SpringMVC+Ma