SSM框架下使用PageHelper分頁
阿新 • • 發佈:2019-02-17
1.一般我們使用maven管理專案,那麼只需要額外匯入如下pom即可:
<!--自定義分頁外掛-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.1</version>
</dependency>
2.需要在sqlSessionFactory中進行自定義攔截器的配置,
//分頁外掛
@Bean
public PageInterceptor pageInterceptor() throws IOException {
PageInterceptor pageInterceptor = new PageInterceptor();
pageInterceptor.setProperties(PropertyUtil.loadProps("pageInterceptor.properties"));
return pageInterceptor;
}
@Bean
public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource());
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactory.setMapperLocations
(new Resource[]{resolver.getResource("classpath:mapper/UserMapper.xml")
, resolver.getResource("classpath:mapper/ItemMapper.xml")
, resolver.getResource("classpath:mapper/OrderMapper.xml")});
sqlSessionFactory.setPlugins(new Interceptor[]{pageInterceptor()});
return sqlSessionFactory;
}
3.在pageInterceptor.properties檔案中可以對分頁攔截器做一些配置,為了方便新手我簡單貼一下自己配置:
offsetAsPageNum=true
reasonable=true
helperDialect=mysql
4.配置好後我們在mapper.xml檔案中就無需像原來一樣用select count(0) from TABLE_NAME,查出總記錄數,再寫一條帶有where if 和limit a,b的語句來進行手動的分頁查詢,在mapper檔案中我們可以直接寫select * from TABLE_NAME,後面也可以加上動態查詢條件,比如根據id,name,desc的模糊查詢等,都可以自動的分頁查詢出來.
5,使用分頁有多種方法,我個人覺得文件的第二種比較簡單,也就是
@Override
public PageInfo<Item> selectSelective(Item item, String pageNum,String pageSize){
if(pageNum==null){
pageNum="1";
}
PageHelper.startPage(Integer.parseInt(pageNum),Integer.parseInt(pageSize));
List<Item> itemList= itemMapper.selectSelective(item);
PageInfo<Item> pageInfo = new PageInfo<>(itemList);
return pageInfo;
}
也就是在你要進行分頁查詢時先寫一條PageHelper.startPage(Integer.parseInt(pageNum),Integer.parseInt(pageSize)),傳入當前頁碼數和每頁顯示的記錄數,下面一定要緊跟你要查詢的具體方法,兩句程式碼一定要放在一起,否則可能會導致安全問題.
6.查詢出來是一個List集合,裡面包含了POJO,為了在前臺獲取分頁的相關資料,需要返回的是一個PageInfo物件,在new PageInfo物件時將我們的List傳入PageInfo物件中,這樣在前臺就可以通過pageInfo.list取出POJO物件集合,總之分頁所需的一切屬性都在pageInfo裡面,讀讀原始碼就瞭解啦~~~這樣在Controller中直接把pageinfo傳給前臺就可以使用了