阅读量:0
在 MyBatis 中,你可以使用 <foreach>
标签结合 SQL 语句中的 LIMIT
和 OFFSET
子句来实现分页查询。以下是一个简单的示例:
- 首先,在你的 MyBatis 配置文件(例如:
mybatis-config.xml
)中,添加一个名为pageSize
的参数,用于设置每页显示的记录数:
<configuration> ... <settings> <setting name="pageSizeZero" value="true"/> </settings> ... </configuration>
- 在你的 Mapper XML 文件中,编写一个分页查询的 SQL 语句。使用
<foreach>
标签遍历查询参数,并使用LIMIT
和OFFSET
子句实现分页:
<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 语句的分页参数。#{offset}
的值可以通过计算 #{pageSize} * (pageNum - 1)
得到,其中 pageNum
是当前页码。
- 在你的 Mapper 接口中,添加一个分页查询的方法:
public interface UserDao { List<User> selectPage(Map<String, Object> params); }
- 最后,在你的 Service 或 Controller 层,调用分页查询方法并传入相应的参数:
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); } }
现在,你可以通过调用 getUsersByPage
方法并传入页码和每页显示的记录数来获取分页查询的结果。