• MyBatis实现分页功能


    思考:为什么需要分页

    • 减少数据的处理量
    • 增加页面的可阅读性

    1、limit基础使用

    # 语法
    select * from table limit startIndex,pageSize;
    # 从第5条数据开始,显示10行
    select * from table limit 4,10;
    
    # limit 第二个参数为-1时,表示从第一个参数开始,查询后面的所有记录
    # 现在已经不能使用了,详情见:https://bugs.mysql.com/bug.php?id=2037
    
    #如果只给定一个参数,它表示返回最大的记录行数目:   
    select * from table limit 5; //检索前5个记录行  
    #等价于select * from table limit 0,5;
    

    2、使用limit实现分页

    具体步骤:

    1. 编写Mapper接口

      public interface UserMapper {
          // 分页查询
          List<User> getUserByLimit(Map<String, Integer> map);
      }
      
    2. 编写Mapper.xml文件

      <select id="getUserByLimit" parameterType="map" resultMap="userMap">
          select *
          from mybatis.user
          limit #{startIndex},#{pageSize}
      </select>
      
    3. 测试类中传入参数

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

    3、使用RowBounds分页

    ​ 我们除了使用Limit在SQL层面实现分页,也可以使用RowBounds在Java代码层面实现分页,当然此种方式作为了解即可,此种方式现在已经不推荐使用

    具体步骤:

    1. 定义Mapper接口

      public interface UserMapper {
          List<User> getUserByRowBounds();
      }
      
    2. 编写Mapper.xml文件

      <select id="getUserByRowBounds" resultMap="userMap">
          select *
          from mybatis.user
      </select>
      
    3. 编写测试类,使用RowBounds

      @Test
      public void getUserByRowBounds() {
          SqlSession sqlSession = MyBatisUtils.getSqlSession();
          int currentPage = 2;  //第几页
          int pageSize = 2;  //每页显示几个
          int startIndex = (currentPage - 1) * pageSize; // 从第几行开始查询
          RowBounds rowBounds = new RowBounds(startIndex,pageSize);
          //通过session.**方法进行传递rowBounds,[此种方式现在已经不推荐使用了]
          List<User> userList = sqlSession.selectList("com.jh.mapper.UserMapper.getUserByRowBounds", null, rowBounds);
          for (User user : userList) {
              System.out.println(user);
          }
          sqlSession.close();
      }
      

    4、使用分页插件分页

    使用pageHelper插件进行分页

    image-20210109114538852

    官网:https://mybatis.io/

    了解即可,万一以后公司的架构师说要使用,你需要知道它!

    懂不懂,都是收获
  • 相关阅读:
    7、python数据类型之集合set
    python基本数据类型练习
    matplotlib
    numpy常用函数
    pillow包
    keras-tensorflow版本对应
    python-激活和切换运行环境
    端口监控
    numpy
    低风险创业笔记
  • 原文地址:https://www.cnblogs.com/paidaxing0623/p/14254518.html
Copyright © 2020-2023  润新知