一·使用limit语句
传递一个参数map,起始页和pageSize
<!-- 分页查询 -->
<select id="getUserByLimit" parameterType="map" resultMap="userMap">
select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
测试:
// 分页
@Test
public void getUserByLimit(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Integer> map = new HashMap<>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> users = mapper.getUserByLimit(map);
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
2.使用RowBounds分页
该方法先查询所有信息,再在java层面进行筛选:
<select id="getUserByRowBounds" resultMap="userMap">
select * from mybatis.user
</select>
需要使用RowBounds类, 不过要使用sqlsession的selectList()方法,传递的第一个参数为具体接口的具体方法,以及RowBounds对象。
// RowBounds分页
@Test
public void getUserByRowBounds(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
List<User> users = sqlSession.selectList("com.he.dao.userDao.UserMapper.getUserByRowBounds", null, new RowBounds(1, 2));
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
limit还可以只传一个参数,表示下标从0开始到endIndex的位置。
select * from user limit #{endIndex}