1. 程式人生 > 遊戲 >Otomate 新作《Radiant Tale》開場動畫公開 遊戲將於5月26日發售

Otomate 新作《Radiant Tale》開場動畫公開 遊戲將於5月26日發售

MyBatis 的分頁功能是基於記憶體的分頁,即先查詢出所有記錄,再按起始位置和頁面容量取出結果。

示例

WebsiteMapper

/**
*
* @param site
* @param currentPageNo 起始位置
* @param pageSize      頁面容量
* @return
*/
public List<Website> selectWebsite(@Param("site") Website site, @Param("from") Integer currentPageNo,
        @Param("pageSize") Integer pageSize);

WebsiteMapper.xml 的查詢語句,增加 limit 關鍵字,SQL 對映程式碼如下

<select id="selectWebsite" resultType="net.biancheng.po.Website">
    SELECT id,name,url,age,country
    FROM website
    <trim prefix="where" prefixOverrides="and">
        <if test="site.name != null and site.name !=''">
            AND name LIKE CONCAT ('%',#{site.name},'%')
        
</if> <if test="site.url!= null and site.url !=''"> AND url LIKE CONCAT ('%',#{site.url},'%') </if> ORDER BY id limit #{from},#{pageSize} </trim> </select>

上述程式碼中,根據傳入的起始位置(currentPageNo=0)和頁面容量(pageSize=3)進行相應分頁,檢視第一頁的資料列表,執行測試方法,輸出正確的分頁列表。

注意:MyBatis 實現分頁查詢屬於 DAO 層操作,由於 DAO 層不牽涉任何業務實現,所以實現分頁的方法中第一個引數為 limit 的起始位置(下標從 0 開始),而不是使用者輸入的真正頁碼(頁碼從1開始)。

頁碼如何轉換為 limit 的起始位置下標,即:起始位置下標=(頁碼-1)*頁面容量

那麼這個轉換操作必然不能在 DAO 層實現,需要在業務層實現。所以我們在測試類中傳入的引數為下標,而不是頁碼。