limit实现分页
思考:为什么需要实现分页
在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查 询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对 数据库压力就在可控范围内。
使用Limit实现分页
#语法
SELECT * FROM table LIMIT stratIndex,pageSize
SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 #为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
SELECT * FROM table LIMIT 95,-1; // 这里的-1是一个低级bug,已经被修复:
SELECT * FROM table LIMIT 5; //检索前 5 个记录行 #换句话说,LIMIT n 等价于 LIMIT 0,n。
步骤:
- 修改Mapper.xml文件
<!--分页查询-->
<select id="getUserByLimit" parameterType="map" resultMap="userMap">
select * from mybatis.user limit ${startIndex},${pageSize}
</select>
- Mapper接口,参数为map
//分页查询
List<User> getUserByLimit(Map<String, Integer> map);
- 在测试类中传入参数值
@Test
public void getUserByLimitTest() {
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper mapper = session.getMapper(UserMapper.class);
Map<String, Integer> map = new HashMap<>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> users = mapper.getUserByLimit(map);
for (User user : users) {
logger.info(user);
System.out.println(user);
}
session.close();
}