1. 程式人生 > >SSM框架下使用PageHelper分頁

SSM框架下使用PageHelper分頁

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傳給前臺就可以使用了