mybatis实现分页的几种方法
通过limit 实现分页
1、基本语法
SELECT * FROM table LIMIT stratIndex,pageSize
#列子
#<1>检索记录为1到10行数据,下标是从0开始的
select * from user limit 0,10;
#<2>limit 只给一个参数表示从0开始到参数值的记录数,下面的语句相当于limit 0,5
select * from user limit 5;
2、添加接口方法
//实现分页操作
List getUserList1(Map map);
3、添加UserMapper.xml。通过map将其实记录数和每页显示条数传进去
3、添加测试
@Test
public void testGetUserList(){
SqlSession sqlSession = MysqlUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map map = new HashMap();
map.put("startindex",0);
map.put("pagesize",2);
List userList1 = mapper.getUserList1(map);
for(User user:userList1){
System.out.println(user);
}
}
4、查看测试结果,返回1、2 两条记录
User{id=1, name='张三', password='322334'}
User{id=2, name='李四', password='123456'}
RowBounds 实现分页
1、添加mapper接口
//通过RowBounds 方法实现分页
List getUserListByRowBounds();
2、UserMapper.xml 配置文件
3、添加测试方法
@Test
public void getUserByRowBounds(){
SqlSession sqlSession = MysqlUtil.getSqlSession();
int currPage =1; //当前页
int pageSize = 2; //每页大小
RowBounds rowBounds = new RowBounds((currPage-1)*pageSize,pageSize);
////通过session.**方法进行传递rowBounds,[此种方式现在已经不推荐使用了]
List userList = sqlSession.selectList("com.xiezhr.dao.UserMapper.getUserListByRowBounds", null, rowBounds);
for(User user:userList){
System.out.println(user);
}
sqlSession.close();
}
4、测试结果,得到第二、第三条数据
User{id=1, name='张三', password='322334'}
User{id=2, name='李四', password='123456'}
通过mybatis分页插件PageHelper实现分页
官方文档:https://pagehelper.github.io/