溫馨提示×

如何在Mybatis中實(shí)現(xiàn)分頁查詢

小樊
81
2024-10-13 15:33:37
欄目: 編程語言

在 MyBatis 中,可以通過編寫自定義的分頁查詢語句來實(shí)現(xiàn)分頁功能。以下是實(shí)現(xiàn)分頁查詢的步驟:

  1. 創(chuàng)建分頁參數(shù)類(PageParam):
public class PageParam {
    private int pageNum; // 當(dāng)前頁碼
    private int pageSize; // 每頁顯示的記錄數(shù)

    // 構(gòu)造方法、getter 和 setter 省略
}
  1. 在 MyBatis 的映射文件中編寫分頁查詢語句:

首先,需要在 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í)際的值。

  1. 在 DAO 層編寫分頁查詢方法:

在 DAO 層,創(chuàng)建一個方法,接收分頁參數(shù)作為參數(shù),并返回分頁查詢結(jié)果。例如:

public interface UserDao {
    List<User> selectPageUser(PageParam pageParam);
}
  1. 在 Service 層調(diào)用分頁查詢方法:

在 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é)果。

0