zoukankan      html  css  js  c++  java
  • 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的分页辅助工具来完成分页

  • 相关阅读:
    排查oom方法
    逃逸分析-栈上分配
    java堆是分配对象的唯一选择吗
    GC
    jvm为什么把-Xms和-Xmx的值设置成一样
    java堆
    java为何使用native 方法
    linux top命令信息详解
    java定位系统性能问题
    struts 初体验
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/11684717.html
Copyright © 2011-2022 走看看