mybatis怎么分页?mybatis分页功能实现

阳光 2022-04-27 15:45:38 java常见问答 5515

MyBatis 是一个开源、轻量级的数据持久化框架,它相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,那mybatis怎么分页?下面来我们就来给大家讲解一下mybatis分页功能的案例。

1.使用limit分页

很容易想到的是通过Mybatis的xml文件写sql语句使用limit关键字分页

语法: select * from user limit startIndex,pageSize;

上面的语句表示:从下标startIndex开始,取pageSize个数据出来(startIndex下标从0开始)

如果sql语句只写一个参数:

select * from user limit 3;

mybatis怎么分页?mybatis分页功能实现.jpg

那如何使用Mybatis实现分页呢?

使用Mybatis实现分页的核心还是上面的分页sql语句

1.接口

//分页
List < User > getUserByLimit(Map < String, Integer > map);

1.jpg

2.Mapper.xml

<!--分页-->
<select id="getUserByLimit" parameterType="map" resultMap="UserMap">
    select * from user limit #{startIndex},#{pageSize}
</select>

3.测试

@Test
public void getUserByLimitTest()
{
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    Map < String, Integer > map = new HashMap < > ();
    map.put("startIndex", 1);
    map.put("pageSize", 2);
    List < User > userList = mapper.getUserByLimit(map);
    for (User user: userList)
    {
        System.out.println(user);
    }
    sqlSession.close();
}

2.jpg

2.使用RowBounds类分页

上面使用limit分页并没有体现java面向对象的思想,就出现了这个类来分页(不建议开发中使用这个)

不再使用SQL实现分页

1.接口

//RowBounds分页
List < User > getUserByRowBounds();

2.mapper.xml

<!--RowBounds分页,直接全查,java代码写分页,但RowBounds还是物理分页,不是内存分页-->
<select id="getUserByRowBounds"  resultMap="UserMap">
    select * from user
</select>

3.测试

@Test
public void getUserByRowBoundsTest()
{
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    //RowBounds实现,从下标1(startIndex)开始,取2个(pageSize)
    RowBounds rowBounds = new RowBounds(1, 2);
    //通过java代码层面实现分页
    List < User > userList = sqlSession.selectList(
        "com.kuang.dao.UserMapper.getUserByRowBounds", null, rowBounds);
    for (User user: userList)
    {
        System.out.println(user);
    }
    sqlSession.close();
}

3.jpg

MyBatis 分页功能就是以上两种方法,MyBatis 的分页功能是基于内存的分页,即先查询出所有记录,再按起始位置和页面容量取出结果。最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

java内存溢出的原因有哪些?java内存溢出如何避免?

如何搭建git服务器?git怎么列出分支?

mybatis怎么防止sql注入?mybatis么防止sql注入方法