本文由黑殼網(wǎng)原創(chuàng)
本文來源mybaits 分頁插件 pageHelper5.0.2~黑殼網(wǎng)
殼叔搞笑一刻
一個老帽兒從未乘過電梯。
這天赞哗,他來到一家飯店,站在電梯門口看見一位老太太進了電梯借卧,過了一會兒泄隔,電梯門又打開了,出來了一位年輕漂亮的姑娘耕蝉,他驚喜過望地想:“哇崔梗,要是把我老婆帶來就好了±菰冢”
如果你在找Mybatis的分頁插件蒜魄,那么PageHelper一定會是你的首選。這一定會是使用最方便的分頁插件场躯。這個插件它支持任何復(fù)雜的單表谈为,多表分頁。
今天會詳細介紹 pageHelper的5.0的使用
目前該插件踢关,支持的數(shù)據(jù)庫有
<ol ><li><p>Oracle</p></li><li><p> Mysql</p></li><li><p>MariaDB</p></li><li><p>SQLite</p></li><li><p> Hsqldb</p></li><li><p>PostgreSQL</p></li><li><p>DB2</p></li><li><p>SqlServer(2005,2008)</p></li><li><p>Informix</p></li><li><p>H2</p></li><li><p>SqlServer2012</p></li><li><p>Derby</p></li></ol>
<p>使用 PageHelper 你只需要在 classpath 中包含 <a data-cke-saved- target="_blank">pagehelper-x.x.x.jar</a> 和<a data-cke-saved- target="_blank"> jsqlparser-0.9.5.jar</a>伞鲫。
如果你使用 Maven,你只需要在 pom.xml 中添加下面的依賴:</p>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.2</version>
</dependency>
與分頁插件 PageHelper 5.0.0 同時發(fā)布的還有 pagehelper-spring-boot-starter耘成。
如果你使用 Spring Boot榔昔,你只需要在 pom.xml 中添加下面的依賴:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
有關(guān) pagehelper-spring-boot-starter 的用法可以參考集成示例 <a data-cke-saved- target="_blank">MyBatis-Spring-Boot</a>
接著,在spring-mybatis.xml中是這樣配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 數(shù)據(jù)庫連接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 加載mybatis的全局配置文件 -->
<property name="mapperLocations">
<array>
<value>classpath:mapping/*.xml</value>
</array>
</property>
<!-- <property name="configLocation" value="classpath:sqlMapConfig.xml" /> -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean>
配置結(jié)束后瘪菌,進入正題撒会,創(chuàng)建一個查詢語句,用了pageHelper 查詢語句與之前的一樣师妙。
select
<include refid="product"></include>
from product
where 1 = 1
查詢一個product 的表
/**
* 產(chǎn)品管理界面
*
* @param request
* @param model
* @return
*/
@RequestMapping(value = "productManage")
private String productManage(HttpServletRequest request, Model model, ProductDetail productDetail,
@RequestParam(required = true, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
PageHelper.startPage(page, pageSize);
List<ProductDetail> productDetails = productService.getProductManage(productDetail);
PageInfo<ProductDetail> p = new PageInfo<ProductDetail>(productDetails);
/**
* 返回產(chǎn)品查詢信息
*/
model.addAttribute("productDetail", productDetail);
/**
* 返回產(chǎn)品信息集合
*/
model.addAttribute("productDetails", productDetails);
/**
* 分頁配置信息返回
*/
model.addAttribute("page", p);
return "manage/product/productManage";
}
可以看到诵肛,方法里有兩個參數(shù),前面也說了默穴,這是一個demo怔檩,僅僅只是一個非常簡單的分頁效果。
PageHelper.startPage(page, pageSize);
這段代碼表示蓄诽,程序開始分頁了薛训,page默認值是1,pageSize默認是10仑氛,意思是從第1頁開始乙埃,每頁顯示10條記錄闸英。
PageInfo這個類是插件里的類,這個類里面的屬性還是值得看一看:
//當前頁
private int pageNum;
//每頁的數(shù)量
private int pageSize;
//當前頁的數(shù)量
private int size;
//由于startRow和endRow不常用介袜,這里說個具體的用法
//可以在頁面中"顯示startRow到endRow 共size條數(shù)據(jù)"
//當前頁面第一個元素在數(shù)據(jù)庫中的行號
private int startRow;
//當前頁面最后一個元素在數(shù)據(jù)庫中的行號
private int endRow;
//總記錄數(shù)
private long total;
//總頁數(shù)
private int pages;
//結(jié)果集
private List<T> list;
//前一頁
private int prePage;
//下一頁
private int nextPage;
//是否為第一頁
private boolean isFirstPage = false;
//是否為最后一頁
private boolean isLastPage = false;
//是否有前一頁
private boolean hasPreviousPage = false;
//是否有下一頁
private boolean hasNextPage = false;
//導(dǎo)航頁碼數(shù)
private int navigatePages;
//所有導(dǎo)航頁號
private int[] navigatepageNums;
//導(dǎo)航條上的第一頁
private int navigateFirstPage;
//導(dǎo)航條上的最后一頁
private int navigateLastPage;
PageInfo<CityList> p=new PageInfo<CityList>(list);
然后mv.addObject("page", p);
這樣在頁面中就可以通過${page.nextPage}翻到下一頁,
${page.prePage}翻到上一頁,
ok是不是簡單了許多甫何,熱愛編程,學(xué)習(xí)不停止遇伞!