Mybatis - 应用篇 (二、进阶应用)

一、MyBatis实现分页

1、关于逻辑分类和物理分页

分页可分为逻辑分页物理分页:

**逻辑分页:**是一次性把全部数据查询加载进内存 ,然后再进行分页。这样优点是减少IO次数,适合频繁访问、数据量少的情况。缺点是不适合大数据量,容易造成内存溢出。

**物理分页:**是利用limit语法在数据库中进行分页。他的优点是适合分页大数据量数据。缺点是频繁查询数据库,消耗性能。

2、Mybatis实现分页功能

mybatis实现分页有三种方式:

  1. 直接使用SQL语句,利用limit关键字分页(物理分页)
  2. RowBounds(逻辑分页)
  3. 第三方插件PageHelper(物理分页)
2.1 SQL语句实现分页

limit语法 limit offset, rows

offset 偏移量,从第条数据开始,默认为0

rows 行数,要拿多少条数据

mapper接口中:意思就是 从第几行开始拿多少条数据。

java 复制代码
    @Select("select count(*) from emp   ")
    int countEmp();

    @Select("select * from emp  limit #{offset},#{rows} ")
    List<Emp> pageEmp(@Param("offset") int offset,@Param("rows") int rows);

如果我们要实现分页逻辑,一般前端会传 pageNum(第几页) , pageSize(多少条数据)。我们需要自己计算分页逻辑。

比如我们接受到的 pageNum = 3 ,pageSzie = 5:

java 复制代码
        int pageNum = 3;  //查第3页
        int pageSize = 5;  //每页显示5条数据

        int count = empMapper.countEmp();  //总条数
        //计算共有多少页 +1是因为如果相除有余数 就等于多了一页,这里粗略计算为多一页
        int pagesNum = (count / pageSize) + 1;
        // 这页的偏移量offset是多少 , 也就是从第几条开始
        int offset = (pageNum - 1) * pageSize;  //偏移量

        List<Emp> roles = empMapper.pageEmp(offset,pagesNum);
        System.out.println(roles);
        //最后把分页数据封装到Page类中返回,这里不做演示

这种方式缺点是比较麻烦,要自己计算分页数据和封装Page类。优点是自定义性强。

相关推荐
摇滚侠11 分钟前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis 使用 MyBatis-Plus 阅读笔记 40
spring boot·笔记·mybatis
摇滚侠21 小时前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 概述 阅读笔记 37
spring boot·笔记·mybatis
摇滚侠21 小时前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis 整合 MyBatis 阅读笔记 38
spring boot·笔记·mybatis
迪飞特科技2 天前
《MyBatis 批量插入性能优化的 5 个关键参数配置》
android·性能优化·mybatis
Java小白笔记2 天前
MyBatis XML Mapper 标签与 CRUD 原理实战
xml·数据库·mybatis
weixin_461408582 天前
Mybatis-flex小记
java·开发语言·mybatis
SQL-First布道者3 天前
⚡Spring JDBC 完整体系 · 第 10 集 · 手搓 `BaseCondition`
java·spring boot·后端·spring·mybatis·spring jdbc
南城以南溫暖如初1473 天前
社交裂变商城系统设计与实战开发指南
java·spring boot·mysql·vue·mybatis
南城以南溫暖如初1473 天前
分享返现商城系统开发实战:技术架构与运营经验指南
java·spring boot·mysql·架构·vue·mybatis
南城以南溫暖如初1473 天前
社群电商实战指南:从零搭建高转化社区的技术架构
java·spring boot·mysql·系统架构·vue·mybatis