溫馨提示×

如何通過mybatis的select屬性實現(xiàn)分頁查詢

小樊
81
2024-10-13 19:17:38
欄目: 編程語言

在 MyBatis 中,你可以使用 <foreach> 標簽結(jié)合 SQL 語句中的 LIMITOFFSET 子句來實現(xiàn)分頁查詢。以下是一個簡單的示例:

  1. 首先,在你的 MyBatis 配置文件(例如:mybatis-config.xml)中,添加一個名為 pageSize 的參數(shù),用于設(shè)置每頁顯示的記錄數(shù):
<configuration>
    ...
    <settings>
        <setting name="pageSizeZero" value="true"/>
    </settings>
    ...
</configuration>
  1. 在你的 Mapper XML 文件中,編寫一個分頁查詢的 SQL 語句。使用 <foreach> 標簽遍歷查詢參數(shù),并使用 LIMITOFFSET 子句實現(xiàn)分頁:
<mapper namespace="com.example.dao.UserDao">
    <select id="selectPage" parameterType="map" resultType="com.example.model.User">
        SELECT * FROM user
        <where>
            <if test="id != null">
                AND id = #{id}
            </if>
            <if test="name != null and name != ''">
                AND name LIKE CONCAT('%', #{name}, '%')
            </if>
        </where>
        LIMIT #{pageSize} OFFSET #{offset}
    </select>
</mapper>

在這個示例中,#{pageSize}#{offset} 是傳遞給 SQL 語句的分頁參數(shù)。#{offset} 的值可以通過計算 #{pageSize} * (pageNum - 1) 得到,其中 pageNum 是當前頁碼。

  1. 在你的 Mapper 接口中,添加一個分頁查詢的方法:
public interface UserDao {
    List<User> selectPage(Map<String, Object> params);
}
  1. 最后,在你的 Service 或 Controller 層,調(diào)用分頁查詢方法并傳入相應的參數(shù):
public class UserService {
    @Autowired
    private UserDao userDao;

    public List<User> getUsersByPage(int pageNum, int pageSize) {
        Map<String, Object> params = new HashMap<>();
        params.put("pageNum", pageNum);
        params.put("pageSize", pageSize);
        return userDao.selectPage(params);
    }
}

現(xiàn)在,你可以通過調(diào)用 getUsersByPage 方法并傳入頁碼和每頁顯示的記錄數(shù)來獲取分頁查詢的結(jié)果。

0