Otomate 新作《Radiant Tale》開場動畫公開 遊戲將於5月26日發售
阿新 • • 發佈:2022-01-27
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 層實現,需要在業務層實現。所以我們在測試類中傳入的引數為下標,而不是頁碼。