美文网首页
7、分页

7、分页

作者: 徒手說梦话 | 来源:发表于2020-02-09 22:06 被阅读0次

思考:为什么需要分页?

在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。

7.1:limit实现分页

使用Limit实现分页

#语法
SELECT * FROM table LIMIT stratIndex,pageSize

SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15   

#为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:    
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.   

#如果只给定一个参数,它表示返回最大的记录行数目:    
SELECT * FROM table LIMIT 5; //检索前 5 个记录行   
 
#换句话说,LIMIT n 等价于 LIMIT 0,n-1。  

注意点:

  • stratIndex是数据库下标开始的位置
  • pageSize是一页显示多少条数据

步骤:

  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();
    }
    

7.2、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();
    }
    
  4. PageHelper可实现RowBounds快速分页插件

相关文章

  • 7、分页

    思考:为什么需要分页? 在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库...

  • 八、bootstrap分页、标签、徽章、巨幕、页头、缩略图、警告

    知识点: 1、分页2、标签3、徽章4、巨幕5、页头6、缩略图7、警告框 1、分页 1)默认的分页 2)禁用和激活状...

  • 7. 分页

    a. 根据页码进行分页 urls.py views.py b. 位置和个数进行分页 urls.py views.p...

  • 2018/12/28 --第12天

    6:28--7:28 springboot 中Mybatis集成分页插件pageHelper 成功实现 7:14 ...

  • 分页查询实践

    练习使用分页查询 每页记录个数为6,请查询出第2页的数据(第7行至第12行) SQL SERVER分页查询 思路:...

  • 7.drf分页

    drf分页功能 文档 地址:http://www.django-rest-framework.org/api-gu...

  • MyBatis之分页

    五、分页 目录:使用Limit分页、RowBounds分页、分页插件 1.使用Limit分页 语法: 使用MyBa...

  • JS的分页算法

    分页的总页数算法 分页算法 分页存储过程或者页面分页中的分页算法: int pagesize // 每页记录数 i...

  • WEB页面中几种常见的分页样式

    这里谈谈WEB页面中几种常见的分页样式 分页样式一:滚动翻页image 分页样式二:常规分页image 分页样式三...

  • 目录【Java分页(前台+后台)】

    SubList分页-001-分页概述 SubList分页-002-需求 SubList分页-003-中文处理 Su...

网友评论

      本文标题:7、分页

      本文链接:https://www.haomeiwen.com/subject/laynxhtx.html