为什么需要分页?
为了减少数据的处理量,使服务器不会因为响应数据过多时,无法及时响应,而降低用户体验
MyBatis分页方法一
通过Limit分页
- 接口中定义处理方法
List<User> getUserLimit(Map<String ,Integer> map);
- 编写sql语句
startIndex:查询时的起始索引
pageSize:每次查询的数据条数
<resultMap id="resultmap" type="user">
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserLimit" parameterType="map" resultMap="resultmap">
select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
- 测试类调用
@Test
public void getUserLimit(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Integer> map = new HashMap<>();
map.put("startIndex", 0);
map.put("pageSize",3);
List<User> userLimit = mapper.getUserLimit(map);
for (User user : userLimit) {
System.out.println(user);
}
sqlSession.close();
}
MyBatis分页方法二
通过RowBounds分页
- 接口定义方法
List<User> getUserRowLimit();
- 在接口对应的.xml文件中,编写sql
<select id="getUserRowLimit" resultMap="resultmap">
select * from mybatis.user
</select>
- 测试类调用
@Test
public void getUserRowLimit(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
List<User> userList = sqlSession.selectList("Dao.UserMapper.getUserRowLimit", null, new RowBounds(1, 3));
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}