SSM中PageHelper的使用方法


SSM中PageHelper的使用方法

轉載於for dream

第一步、導包(或者導入坐標)

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>

第二步、配置到spring 和mybait 整合的配置文件中

1.整合到spring-mybatis中
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--配置mybatis 插件-->
<property name="plugins">
    <set>
        <!--配置pageHelper 分頁插件-->
        <bean class="com.github.pagehelper.PageInterceptor">
            <property name="properties">
                <props>
                    <!--方言:-->
                    <prop key="helperDialect">mysql</prop>
                </props>
            </property>
        </bean>
    </set>
</property>
</bean>
2.整合到mybaits-config中(選一種)
<plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--reasonable:分頁合理化參數,默認值為false。
                當該參數設置為 true 時,pageNum<=0 時會查詢第一頁,
                pageNum>pages(超過總數時),會查詢最后一頁。
                默認false 時,直接根據參數進行查詢。-->
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>

第三步、方法調用

使用PageHelper.startPage 靜態方法調用startPage :
特點:

  1. 靜態方法,傳遞兩個參數(當前頁碼,每頁查詢條數)
  2. 使用pageHelper 分頁的時候,不再關注分頁語句,查詢全部的語句
  3. 自動的對PageHelper.startPage 方法下的第一個sql 查詢進行分頁
    PageHelper.startPage(1,5);
    //緊跟着的第一個select 方法會被分頁
    List list = countryMapper.findAll();

也就是說再Service層PageHelper.startPage(1,5);語句后一定是緊跟查詢語句。

Service層示例代碼

public PageInfo findPage(int page,int pageSize){
  PageHelper.startPage(page,pageSize);
  List<Company> List=companyDao.selectAll();
  PageInfo pageInfo = new PageInfo(list);
  return pageInfo;
 }

返回的信息就是pageInfo對象,該類是插件里的類,這個類里面的屬性還是值得看一看

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;
}

第四步、在Controller中的使用是將Service層返回來的PageInfo對象放入request域中

在jsp頁面中的取值根據PageInfo中的get方法,使用EL表達式取出保存的值。在html同理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM