limit实现分页

为什么需要分页?
避免一次性查出大量数据,减轻数据库压力。
使用Limit实现分页
下标是从0开始

  1. #语法
  2. SELECT * FROM table LIMIT stratIndexpageSize
  3. SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
  4. #为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
  5. SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
  6. #如果只给定一个参数,它表示返回最大的记录行数目:
  7. SELECT * FROM table LIMIT 5; //检索前 5 个记录行
  8. #换句话说,LIMIT n 等价于 LIMIT 0,n。

步骤:
1、修改Mapper文件

<select id="selectUser" parameterType="map" resultType="user">
  select * from user limit #{startIndex},#{pageSize}
</select>

2、Mapper接口,参数为map

//选择全部用户实现分页
List<User> selectUser(Map<String,Integer> map);

3、在测试类中传入参数测试

  • 推断:起始位置 = (当前页面 - 1 ) * 页面大小
    //分页查询 , 两个参数startIndex , pageSize
    @Test
    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代码层面实现分页,当然此种方式作为了解即可。我们来看下如何实现的!
    步骤:
    1、mapper接口
    //选择全部用户RowBounds实现分页
    List<User> getUserByRowBounds();
    

2、mapper文件

<select id="getUserByRowBounds" resultType="user">
select * from user
</select>

3、测试类
在这里,我们需要使用RowBounds类

@Test
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

官方文档:https://pagehelper.github.io/