在 MyBatis 中,可以通過編寫自定義的分頁查詢語句來實現分頁功能。以下是實現分頁查詢的步驟:
public class PageParam {
private int pageNum; // 當前頁碼
private int pageSize; // 每頁顯示的記錄數
// 構造方法、getter 和 setter 省略
}
首先,需要在 MyBatis 的映射文件中添加一個 resultMap,用于映射查詢結果到實體類。例如,假設有一個 User 實體類,可以創建如下 resultMap:
<resultMap id="UserResultMap" type="com.example.entity.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="email" column="email"/>
</resultMap>
接下來,編寫分頁查詢語句。這里以 MySQL 數據庫為例,使用 rowNum 分頁:
<select id="selectPageUser" resultMap="UserResultMap">
SELECT * FROM user
ORDER BY id
LIMIT #{pageNum}, #{pageSize}
</select>
注意,這里的 #{pageNum} 和 #{pageSize} 是分頁參數,它們將在運行時被替換為實際的值。
在 DAO 層,創建一個方法,接收分頁參數作為參數,并返回分頁查詢結果。例如:
public interface UserDao {
List<User> selectPageUser(PageParam pageParam);
}
在 Service 層,注入 UserDao,并調用 selectPageUser 方法進行分頁查詢。例如:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public PageInfo<User> selectPageUser(int pageNum, int pageSize) {
PageParam pageParam = new PageParam();
pageParam.setPageNum(pageNum);
pageParam.setPageSize(pageSize);
List<User> userList = userDao.selectPageUser(pageParam);
int total = userDao.selectUserCount(); // 查詢總記錄數
return new PageInfo<>(pageNum, pageSize, total, userList);
}
}
這里,我們使用了 PageInfo 類來封裝分頁查詢結果,包括當前頁碼、每頁顯示的記錄數、總記錄數和查詢結果列表。你需要自己實現 PageInfo 類,或者使用第三方分頁庫,如 MyBatis-Plus。
現在,你可以在你的應用程序中使用分頁查詢功能了。只需傳入當前頁碼和每頁顯示的記錄數,即可獲取分頁后的查詢結果。