分页一般分为物理分页:先查询所有值再分页输出,逻辑分页:直接分页查询输出,mybatis支持物理分页,如下:
1、物理分页:
mapper映射:
<select id="findStudents" resultMap="StudentResult">
select * from t_student order by id asc
</select>
Dao接口:
/**
* mybatis分页查询-逻辑分页
* @param rowBounds
* @return
*/
public List<Student> findStudents(RowBounds rowBounds);
测试:
/**
* 逻辑分页----查询所有数据再分页输出
* @throws Exception
*/
@Test
public void testRowBounds() throws Exception{
logger.info("学生查询-逻辑分页");
int offset = 3; //start
int limit = 3; //size
RowBounds rowBounds = new RowBounds(offset,limit);
List<Student> studentList = studentDao.findStudents(rowBounds);
for (Student student : studentList) {
System.out.println(student);
}
}
2、逻辑分页:
mapper映射:
<select id="findStudents2" parameterType="Map" resultMap="StudentResult">
select * from t_student
<if test="start != null and size != null">
limit #{start},#{size}
</if>
</select>
Dao接口:
/**
* mybatis分页查询-物理分页
* @param rowBounds
* @return
*/
public List<Student> findStudents2(Map<String, Object> map);
测试:
/**
* 物理分页----查询分页数据再输出
* @throws Exception
*/
@Test
public void testFind() throws Exception{
logger.info("学生查询-物理分页");
Map<String, Object> map = new HashMap<>();
map.put("start", 0);
map.put("size", 3);
List<Student> studentList = studentDao.findStudents2(map);
for (Student student : studentList) {
System.out.println(student);
}
}