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