Mybatis分页

Mybatis分页
LuckyTigerlimit实现分页
思考:为什么需要分页?
在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。
使用Limit实现分页
1 | #语法 |
步骤:
修改Mapper文件
1
2
3<select id="selectUser" parameterType="map" resultType="user">
select * from user limit #{startIndex},#{pageSize}
</select>Mapper接口,参数为map
1
2//选择全部用户实现分页
List<User> selectUser(Map<String,Integer> map);在测试类中传入参数测试
推断:起始位置 = (当前页面 - 1 ) * 页面大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20//分页查询 , 两个参数startIndex , pageSize
public void testSelectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int currentPage = 1; //第几页
int pageSize = 2; //每页显示几个
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",(currentPage-1)*pageSize);
map.put("pageSize",pageSize);
List<User> users = mapper.selectUser(map);
for (User user: users){
System.out.println(user);
}
session.close();
}
RowBounds分页
我们除了使用Limit在SQL层面实现分页,也可以使用RowBounds在Java代码层面实现分页,当然此种方式作为了解即可。我们来看下如何实现的!
步骤:
mapper接口
1
2//选择全部用户RowBounds实现分页
List<User> getUserByRowBounds();mapper文件
1
2
3<select id="getUserByRowBounds" resultType="user">
select * from user
</select>测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void testUserByRowBounds() {
SqlSession session = MybatisUtils.getSession();
int currentPage = 2; //第几页
int pageSize = 2; //每页显示几个
RowBounds rowBounds = new RowBounds((currentPage-1)*pageSize,pageSize);
//通过session.**方法进行传递rowBounds,[此种方式现在已经不推荐使用了]
List<User> users = session.selectList("com.kuang.mapper.UserMapper.getUserByRowBounds", null, rowBounds);
for (User user: users){
System.out.println(user);
}
session.close();
}
第三方插件
例 PageHelper
评论
匿名评论隐私政策