PageHelper的使用和一些錯誤總結

使用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);語句後一定是緊跟查詢語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章