1. 程式人生 > 實用技巧 >ssm框架新增分頁

ssm框架新增分頁

分頁需要對前後端都進行處理,下面詳細介紹一下:

一、後端的處理

1、基礎方法

1、基礎的方法是封裝一個分頁類如下

public class Pages {
private Integer pageNo=1;//頁號
private Integer pageSize=6;//頁大小
private Integer withPage=1;//是否分頁
public Integer getStartRow(){//獲取開始行,limit方言
return (pageNo-1)*pageSize;
}
}

2、然後查詢的物件繼承一下這個頁面類,查詢的時候加上limit如下

select id,username,likes from user limit #{startRow},#{pageSize}

3、查詢的時候自己設定頁面大小和頁號,不然會選擇預設,這樣就能根據要求查詢出想要的資料了。

4、也可以把引數封裝成Map來傳遞。

2、使用分頁外掛

1、使用pageHelper外掛就比較方便了步驟如下:

2、匯入包

  <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</
artifactId> <version>5.1.10</version> </dependency>

這個外掛會自動攔截sql然後計算出需要的資訊

3、在sqlsessionFactory中配置外掛如下:

    <!-- sqlSessionFactory 連線池引入-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource"
ref="datasource"></property> <property name="typeAliasesPackage" value="com.pojo"></property> <!-- 配置外掛,外掛攔截sql語句進行操作--> <property name="plugins"> <!-- 陣列用array,list用list,preperties用props每一項都有key和value--> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <!--合理性--> <prop key="reasonable">true</prop> <!--資料庫型別--> <prop key="helperDialect">mysql</prop> </props> </property> </bean> </array> </property> </bean>

4、通過業務層返回給controller一個pageInfo<T>來傳遞給前端資訊

public PageInfo<User> list(User user) {
        PageHelper.startPage(user.getPageNo(),user.getPageSize());//設定起始頁和頁大小,不用自己算了
        PageInfo<User> pageInfo=new PageInfo<User>(userDao.list(user));//然後把資訊給pageInfo,返回所有分頁資訊
        return pageInfo;
    }

5、前端通過引數回撥來實現分頁。

2、前端的處理

1、首先通過span和a標籤來實現頁按鈕,span為不可點標籤,a為跳轉標籤

2、我們可以通過觀察返回的pageinfo觀察到要用到的引數,包含上一頁、下一頁、頁內容、總頁數,開始位置和結束位置等引數

3、通過地址來把引數加進去查詢,比如上一頁就是list?pageNo=${users.prePage}

為了相容搜尋還要加上搜索內容即list?pageNo=${users.prePage}&username=${username}

4、處理首頁的上一頁和尾頁的下一頁,加個when和otherwise即可

分頁程式碼如下:

<div class="pagelist">
                <c:choose>
                    <c:when test="${users.pageNum==1}">
                        <span class="current">首頁</span>
                        <span class="current">上一頁</span>
                    </c:when>
                    <c:otherwise>
                        <a href="list?pageNo=1&username=${username}">首頁</a>
                        <a href="list?pageNo=${users.prePage}&username=${username}">上一頁</a>
                    </c:otherwise>
                </c:choose>

                <c:forEach items="${users.navigatepageNums}" var="i">
                    <c:choose>
                        <c:when test="${i==users.pageNum}">
                            <span class="current">${i}</span>
                        </c:when>
                        <c:otherwise>
                            <a href="list?pageNo=${i}&username=${username}">${i}</a>
                        </c:otherwise>
                    </c:choose>

                </c:forEach>

                <c:choose>
                    <c:when test="${users.pageNum==users.pages}">
                        <span class="current">下一頁</span>
                        <span class="current">尾頁</span>
                    </c:when>
                    <c:otherwise>
                        <a href="list?pageNo=${users.nextPage}&username=${username}">下一頁</a>
                        <a href="list?pageNo=${users.pages}&username=${username}">尾頁</a>
                    </c:otherwise>
                </c:choose>

            </div>

具體樣式可以自己調,我的樣式效果如下:

這樣就完成了資料的分類顯示功能。