通过使用Mybatis插件来实现数据的分页功能

本文涉及的产品
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
函数计算FC,每月15万CU 3个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 通过使用Mybatis插件来实现数据的分页功能

背景

分页:

  1. 如果一次性的查询全部数据, 响应时间就太长了, 使得浏览器, java虚拟机都有延迟, 用户使用上就会容易出现卡顿:
  2. 所以就要降低数据库的压力, 使用分页来显示, 一次显示一部分数据

例子:

假设有五条数据, 每一页都显示两条

实现分页要知道:

  1. 每页多少条数据
  2. 当前的页数
  3. 一共多少页数据(可以通过ElementUI来实现自动计算)

一、SpringBoot的后端

1、手动拼接SQL来实现

可以由前端将当前的页数传到后端

由后端将需要展示的数据返回前端

Controller层

在这里插入图片描述
Mapper文件(在不使用Mybatis插件, 使用limit分页)

2、使用Mybatis插件来实现

使用Mybatis插件:

  1. 可以自动为我们的SQL添加limit语句
  2. 还可以再发送一条语句来获取总条数

(前端需要总条数来计算总页数)

  1. 首先要导入依赖
        <!-- pagehelper依赖 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
  1. 配置spring文件

在这里插入图片描述

  1. 使用对应类将总页数, 与数据封装到对象PageInfo里

在Service层里

在这里插入图片描述

二、Vue-cli的前端:

接收后端发来的数据信息

在这里插入图片描述

分页组件

在这里插入图片描述
在这里插入图片描述
具体说明
在这里插入图片描述

函数说明

在这里插入图片描述
_

请求响应跟踪

请求
在这里插入图片描述

响应
在这里插入图片描述

三、在使用Mybatis插件进行多表查询(表数大于2)出现的问题

在Mybatis插件进行分页时, 如果数据时多张表进行的联表查询, 插件会出错

比如:
说一个领导有两个职位, 他返回的数据将会是两个相同的领导的数据, 不是一条领导数据对应两个职位
在这里插入图片描述
这里通过mybatis查询出来的total会是两条, id是1与2
而我们希望查询出来是一条, 所以要嵌套查询, 不能一次性联表查询多张表

后端mapper文件

在这里插入图片描述
在这里插入图片描述
本来应该是一个人, 对应两个职位, mybatis是封装好了的, 但是用了分页插件之后, 就会出现
在这里插入图片描述

**因为使用mybatis分页插件之后就总会发送一条查询数据总数的SQL语句,
将total放进PageInfo对象发送给前端 , 下面用日志打印出来**在这里插入图片描述

这种原因我们可以在sql解决也可以改变查询方式来解决

1. SQL解决

直接给查询语句添加 group_concat(职位),将两条记录直接合成一条记录
在这里插入图片描述
结果就是种类型: 在这里插入图片描述

2.后端查询方式改变成嵌套查询

mapper文件

在这里插入图片描述

前端再根据v-for将结果循环出来:
在这里插入图片描述

效果就会是 :
在这里插入图片描述

四、 分页总结

  1. 实现分页, 需要在查询数据时候就将limit拼接进SQL
  2. 用Mybatis插件来自动拼接, 并且查询数据的总数给前端
  3. 前端用ElementUI组件接收展示
  4. mybatis本来可以自己将数据封装,类似于 group_concat()的的效果, 但是如果是多张表查询(大于2 )就要使用嵌套查询, 不然达不到想要的效果
相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
135 8
|
3月前
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
19天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
36 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
19天前
|
Java 数据库连接 容器
Mybatis-Plus核心功能
Mybatis-Plus核心功能
|
2月前
|
SQL Java 数据库连接
解决mybatis-plus 拦截器不生效--分页插件不生效
本文介绍了在使用 Mybatis-Plus 进行分页查询时遇到的问题及解决方法。依赖包包括 `mybatis-plus-boot-starter`、`mybatis-plus-extension` 等,并给出了正确的分页配置和代码示例。当分页功能失效时,需将 Mybatis-Plus 版本改为 3.5.5 并正确配置拦截器。
421 6
解决mybatis-plus 拦截器不生效--分页插件不生效
|
2月前
|
SQL 存储 Java
原生JDBC简单实现Mybatis核心功能
本文介绍了在Vertx项目中使用Tdengine时,因缺乏异步JDBC驱动而采用同步驱动结合`vertx.executeBlocking`实现异步查询的方法。文中详细描述了自行开发的一个简易JDBC工具,该工具实现了SQL参数绑定与返回值映射至实体类的功能,简化了原生JDBC的繁琐操作。通过具体示例展示了其实现过程及代码细节,并与原生JDBC进行了对比,突显了其便捷性和实用性。
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
3月前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
209 1
|
3月前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
3月前
|
供应链 前端开发 Java
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
该博客文章介绍了一个使用Mybatis、Layui、MVC和JSP技术栈开发的服装库存管理系统,包括注册登录、权限管理、用户和货号管理、库存管理等功能,并提供了源码下载链接。
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】