MyBatis中使用RowBounds对查询结果集进行分页
Posted Magic_Li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis中使用RowBounds对查询结果集进行分页相关的知识,希望对你有一定的参考价值。
MyBatis可以使用RowBounds逐页加载表数据。RowBounds对象可以使用offset和limit参数来构建。参数offset表示开始位置,而limit表示要取的记录的数目
映射文件:
<select id="findAllUsers" resultType="User"> select id,name,gender from t_user </select>
映射接口中:
public List<User> findAllUsers(RowBounds rowBounds);
测试方法:
@Test public void test_findAllUsers2(){ SqlSession sqlSession = null; try { sqlSession = MyBatisSqlSessionFactory.openSession(); SpecialMapper mapper = sqlSession.getMapper(SpecialMapper.class); //表示从第几条数据开始 int offset = 0; //连续取出几条数据 int limit = 5; RowBounds rowBounds = new RowBounds(offset, limit); List<User> list = mapper.findAllUsers(rowBounds); list.forEach(System.out::println); } catch (Exception e) { e.printStackTrace(); } }
注意,若规定每页5条数据,要展示第二页,使用offset=5,limit=5
但是其实Mybatis的分页是基于内存的分页(查出所有记录再按偏移量和limit取结果),在大数据量的情况下这样的分页效率会很低,一般情况下我们会使用mybaits的分页辅助工具来完成分页
以上是关于MyBatis中使用RowBounds对查询结果集进行分页的主要内容,如果未能解决你的问题,请参考以下文章