从MySQL基本语句的分页查询到MyBatis再到MyBatis-plus

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: # 引言在实际开发中,我们为了提高页面的响应速度,也为了优化用户的体验,同时也减少流量和性能的消耗,往往在面对大量数据时会采取分页的操作。接下来这篇文章我带大家从原生的SQL语句中的分页到MyBatis中去分页,最后我们再看一下MyBatis-plus下的分页操作。# MySQL的分页(分页在SQL层面的原理)MySQL 分页操作可以使用 `LIMIT` 和 `OFFSET` 子句来实现。例如,如果想从一个 `users` 表中选择第二页(每页显示 10 条记录)的数据,可以使用以下查询:```SELECT * FROM users LIMIT 10 OFFSET

引言

在实际开发中,我们为了提高页面的响应速度,也为了优化用户的体验,同时也减少流量和性能的消耗,往往在面对大量数据时会采取分页的操作。

接下来这篇文章我带大家从原生的SQL语句中的分页到MyBatis中去分页,最后我们再看一下MyBatis-plus下的分页操作。

MySQL的分页(分页在SQL层面的原理)

MySQL 分页操作可以使用 LIMITOFFSET 子句来实现。

例如,如果想从一个 users 表中选择第二页(每页显示 10 条记录)的数据,可以使用以下查询:

SELECT * FROM users LIMIT 10 OFFSET 10;

这将从第 11 条记录开始,选择后面的 10 条记录。

如果想选择前 10 条记录,可以使用以下查询:

SELECT * FROM users LIMIT 10;

我们还可以将 LIMITOFFSETWHERE 子句一起使用,以筛选数据。例如,如果想选择所有状态为 "active" 的用户,并从第二页开始(每页显示 10 条记录),可以使用以下查询:

SELECT * FROM users WHERE status = 'active' LIMIT 10 OFFSET 10;

MyBatis中使用分页

在 MyBatis 中使用分页,同样使用 LIMITOFFSET 子句,并通过参数传递给 SQL 语句。

例如,如果有一个名为 UserMapper 的接口和一个对应的 XML 映射文件,你可以在 XML 映射文件中定义如下分页查询:

<select id="selectUsers" resultType="com.example.User">
  SELECT * FROM users
  WHERE status = #{status}
  LIMIT #{limit} OFFSET #{offset}
</select>

然后,我们可以在 UserMapper 接口中使用以下方法调用分页查询:

List<User> selectUsers(@Param("status") String status, @Param("offset") int offset, @Param("limit") int limit);

我们也可以可以通过调用该方法来选择状态为 "active" 的用户,并从第二页开始(每页显示 10 条记录)

List<User> users = userMapper.selectUsers("active", 10, 10);

mybatis-plus如何分页呢

Mybatis Plus 是一个 Mybatis 的增强工具,可以简化 Mybatis 的使用,并提供一些额外的功能。

在 Mybatis Plus 中使用分页,你需要使用 com.baomidou.mybatisplus.extension.plugins.pagination.Page 类。 该类是一个分页信息对象,包含了当前页码、每页大小等信息。

值得一提的是,MyBatis-plus是对MyBatis的一个升级,一个增强,一个扩展,引入他到你的项目中并不会对之前的MyBatis有什么影响,你可以很丝滑的在项目中去使用他。

例如,如果你想查询第二页(每页显示 10 条记录)的用户数据,可以使用以下代码:

Page<User> page = new Page<>(2, 10);
List<User> users = userMapper.selectPage(page, null);

其中,第一个参数是 Page 对象,第二个参数是查询条件。

然后,你可以使用 page.getTotal() 方法获取总记录数,page.getRecords() 方法获取当前页的数据列表。

注意,在 Mybatis Plus 中,你需要在对应的 XML 映射文件中启用分页插件,才能使用分页功能。例如:


<!-- 在mapper节点上启用分页插件 -->
<mapper namespace="com.example.UserMapper">
  <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"/>
</mapper>

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
SQL 缓存 Java
Mybatis及MybatisPlus
MyBatis 是一款优秀的持久层框架,支持自定义 SQL、存储过程及高级映射。其系统架构通过 mybatis-config.xml 配置全局信息,结合 mapper.xml 映射 SQL 语句,构建 SqlSessionFactory 并创建 SqlSession 操作数据库。MyBatis 底层通过 Executor 执行器和 Mapped Statement 对象实现 SQL 的输入输出映射与执行。支持复杂结果集映射,
|
11月前
|
SQL Java 数据库连接
mybatis如何实现分页查询?
【10月更文挑战第19天】mybatis如何实现分页查询?
929 3
|
11月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
2251 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
11月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
250 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
11月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
578 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
12月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
403 3
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
1357 0
|
Java 关系型数据库 数据库连接

推荐镜像

更多