11. Limit实现分页
分页查询:
select * from tableName limit startIndex,pageSize
# startIndex 是查询的起始位置
# pageSize 每页查询的数量
如:
select * from user limit 0,2;
查询结果:(实际user表中有4条数据)
1,admin,123456 2,李四,123456
拓展:
select * from user limit 0,-1;
这个之前表示从第一条查到最后一条,但这种用法之前实际上是mysql的一个bug,现在已经被修复了。
代码示例:
接口:
List<User> getUserByLimit(Map<String,Integer> map);
xml
<select id="getUserByLimit" parameterType="map" resultType="user">
select * from user limit #{startIndex},#{pageSize}
</select>测试:
@org.junit.Test
public void test(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userByLimit = mapper.getUserByLimit(map);
for (User user : userByLimit) {
System.out.println(user);
}
}
运行结果:
User{id=1, name='admin', pwd='123456'} User{id=2, name='李四', pwd='123456'}