在 MyBatis 中,你可以使用 <foreach>
標簽結(jié)合 SQL 語句中的 LIMIT
和 OFFSET
子句來實現(xiàn)分頁查詢。以下是一個簡單的示例:
mybatis-config.xml
)中,添加一個名為 pageSize
的參數(shù),用于設(shè)置每頁顯示的記錄數(shù):<configuration>
...
<settings>
<setting name="pageSizeZero" value="true"/>
</settings>
...
</configuration>
<foreach>
標簽遍歷查詢參數(shù),并使用 LIMIT
和 OFFSET
子句實現(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
是當前頁碼。
public interface UserDao {
List<User> selectPage(Map<String, Object> params);
}
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é)果。