9. 分页

空~2022年8月30日
  • mybatis
大约 1 分钟

9. 分页

limit 分页

sql

select * from mybatis.userlimit #{startIndex}, #{pageSize};

接口

/**
 * 分页查询
 *
 * @param map map
 * @return user
 * */
List<User> getUserLimit(Map<String, Object> map);

mapper.xml

<select id="getUserLimit" parameterType="map" resultMap="userMap">
    select *  from mybatis.user  limit #{startIndex}, #{pageSize};
</select>

测试

@Test
public void limitTest() {
    try (SqlSession sqlSession = MybatisUtils.getSession()) {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String, Object> map = new HashMap<>();
        map.put("startIndex", 0);
        map.put("pageSize", 2);
        List<User> userLimit = mapper.getUserLimit(map);
        System.out.println(userLimit);
        sqlSession.commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

RowBounds 分页

接口

/**
   * 逻辑分页查询
   *
   * @param rowBounds r
   * @return user
   */
List<User> getUserLimitRowBounds(RowBounds rowBounds);

mapper.xml

<select id="getUserLimitRowBounds" resultMap="userMap">
    select *
    from mybatis.user;
</select>

测试

public void limitRowBounds() {
    RowBounds rowBounds = new RowBounds(2, 2);
    SqlSession session = MybatisUtils.getSession();
    List<User> userList = session.selectList("dao.UserMapper.getUserLimitRowBounds", null, rowBounds);
    System.out.println(userList);
}

分页插件

Mybatis PageHelper

分页插件

  1. 添加 maven 依赖

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.2.1</version>
    </dependency>
    
  2. 配置拦截器插件

     <!--
        plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
        properties?, settings?,
        typeAliases?, typeHandlers?,
        objectFactory?,objectWrapperFactory?,
        plugins?,
        environments?, databaseIdProvider?, mappers?
     -->
    <plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
            <property name="param1" value="value1"/>
        </plugin>
    </plugins>
    
  3. 简单使用

    <!--查询所有-->
    <select id="selectAll" resultType="com.bjpowernode.domain.Student">
        select *
        from mybatis.student
        order by id
    </select>
    
    @Test
    public void testSelectAllPageHelper(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao  =  sqlSession.getMapper(StudentDao.class);
        //加入PageHelper的方法,分页
        // pageNum: 第几页, 从1开始
        // pageSize: 一页中有多少行数据
        PageHelper.startPage(1,3);
        List<Student> students = dao.selectAll();
        for(Student stu:students){
            System.out.println("foreach--one ==="+stu);
        }
    }