MyBatis 如何实现分页?

MyBatis可以通过多种方式实现分页:

  1. 使用 RowBounds 对象
    RowBounds类可以指定分页中的起始行和条数。
int start = (pageNum -1) * pageSize;
int end = pageSize;
RowBounds rowBounds = new RowBounds(start, end);

List<User> list = sqlSession.selectList(
       "com.itzhimei.mapper.UserMapper.selectAll", null, rowBounds);

在Mapper映射中:

<select id="selectAll" resultType="com.itzhimei.pojo.User">
  select * from user
</select>
  1. 使用 limit 关键字
    例如MySQL、PostgreSQL等支持limit分页。
<select id="selectAll" resultType="com.itzhimei.pojo.User">
  select * from user limit #{start}, #{pageSize}  
</select>

设置参数:

map.put("start", start);  
map.put("pageSize", pageSize);
  1. 使用分页插件
    如PageHelper插件,直接在代码中使用:
PageHelper.startPage(pageNum, pageSize); 

List<User> list = sqlSession.selectList(
       "com.itzhimei.mapper.UserMapper.selectAll");

PageHelper会自动在SQL后添加分页条件。

总的来说,MyBatis可以通过以下方式实现分页:

  • 使用RowBounds对象
  • 在SQL中使用limit分页
  • 使用第三方分页插件