使用PageHelper犯的錯
以爲pagehelper很簡單,直接將全部查詢結果全部給與pageInfo就行了,結果犯了大錯,,分頁結果顯示不出來,只是將全部結果顯示出來。
解決方案:將SQL查詢語句的返回值放在pageHelper.startPage(pageNum,pageSize)後面
PageHelper.startPage(pageNum, pageSize);
List<Video> videos = videoService.findAll();
PageInfo pageInfo = new PageInfo(videos);
pageHelper一些參數:
public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
//當前頁
private int pageNum;
//每頁的數量
private int pageSize;
//當前頁的數量
private int size;
//由於startRow 和endRow 不常用,這裏說個具體的用法
//可以在頁面中"顯示startRow 到endRow 共size 條數據"
//當前頁面第一個元素在數據庫中的行號
private int startRow;
//當前頁面最後一個元素在數據庫中的行號
private int endRow;
//總記錄數
private long total;
//總頁數
private int pages;
//結果集
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;
//導航頁碼數
private int navigatePages;
//所有導航頁號
private int[] navigatepageNums;
//導航條上的第一頁
private int navigateFirstPage;
//導航條上的最後一頁
private int navigateLastPage;
}
pagehelper的使用
第一步:導入依賴
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
第二步:配置到spring整合配置文件applicationContext.xml中或者mybatis配置文件中
<!--配置sqlsessionFactoryBean-->
<!--在基礎的 MyBatis 用法中,是通過 SqlSessionFactoryBuilder 來創建 SqlSessionFactory 的,而在 MyBatis-Spring 中,則使用 SqlSessionFactoryBean 來創建。-->
<bean name="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- <property name="configLocation" value="classpath:mybatis-config.xml.bak"></property>-->
<property name="plugins">
<set>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<!--配置數據庫-->
<prop key="helperDialect">mysql</prop>
<!--當pageNum<1,默認查詢一頁
當pageNum>totalpage時,查最後一頁-->
<prop key="reasonable">true</prop>
<!--支持接口傳值-->
<prop key="supportMethonsArguments">true</prop>
</props>
</property>
</bean>
</set>
</property>
</bean>
第三步:controller層直接調用
@RequestMapping("list")
public String list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize",required = false,defaultValue = "3") Integer pageSize,
Model model){
PageHelper.startPage(pageNum, pageSize);
List<Video> videos = videoService.findAll();
for (Video video : videos) {
System.out.println(video);
}
PageInfo pageInfo = new PageInfo(videos);
model.addAttribute("pageInfo",pageInfo);
return "/list.jsp";
}
自動的對PageHelper.startPage 方法下的第一個sql 查詢進行分頁
PageHelper.startPage(pageNum,pageSize);
//緊跟着的第一個select 方法會被分頁
List videos = videoService.findAll();
也就是說再controller層PageHelper.startPage(pageNum,pageSize);語句後一定是緊跟查詢語句。