MaBatis--分页

简介: 本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、原生SQL分页、数组分页及拦截器分页。对比了逻辑分页与物理分页的优劣,指出大数据量下应优先选用物理分页,避免内存溢出,提升系统性能。

1 自带rowbound分页
先将所有的结果集查询出来ResultSet,再进行内存分页(limit)
2 第三方插件pagehelper
会将一个查询SQL变成两部分执行,假设SQL是:select name from user;
①自动识别数据库类型,添加对应的分页关键字,如MySQL则limit,Oracle则rownum,DB2则fetch,查找出上面SQL的结果
②查找出上面结果,查询结果的总条数count
3 SQL分页
依赖limit进行实现,或者rownum等自身的SQL实现
4 数组分页
简而言之:查全部再subList
首先在dao层,创建StudentMapper接口,用于对数据库的操作。在接口中定义通过数组分页的查询方法,如下所示:
image.png
方法很简单,就是获取所有的数据,通过list接收后进行分页操作。创建StudentMapper.xml文件,编写查询的sql语句:
image.png
可以看出再编写sql语句的时候,我们并没有作任何分页的相关操作。这里是查询到所有的学生信息。接下来在service层获取数据并且进行分页实现:
定义IStuService接口,并且定义分页方法:
image.png
通过接收currPage参数表示显示第几页的数据,pageSize表示每页显示的数据条数。
创建IStuService接口实现类StuServiceIml对方法实现,对获取到的数组通过currPage和pageSize进行分页:
image.png
通过subList方法,获取到两个索引间的所有数据。
最后在controller中创建测试方法:
image.png
通过用户传入的currPage和pageSize获取指定数据。

5 拦截器分页
自定义拦截器实现了拦截所有以ByPage【或自己约束的都是可以的】结尾的查询语句,并且利用获取到的分页相关参数统一在sql语句后面加上limit分页的相关语句。
6 总结
逻辑分页:即内存分页,就是mybatis自带的rowbounds,内存开销大,数据量小效率比物理分页快,但大数据量,易内存溢出
物理分页:上述2345,小数据量效率比逻辑分页慢,但是大数据量推荐用物理分页。
物理分页总是优先于逻辑分页。

相关文章
|
SQL 存储 前端开发
SQL注入从入门到进阶(一)--->入门篇
看完本章节内容:1. 知道什么是Sql注入 2. 实现最基础的Sql注入
3017 0
|
弹性计算 对象存储 CDN
阿里云流量怎么收费?0.8元每GB?地域不同流量价格不同
阿里云流量怎么收费?0.8元每GB?地域不同流量价格不同,除了华北 1 (青岛)地域是0.72元/GB的价格,其他的阿里云中国内地云服务器流量价格均为0.8元每GB;中国香港地域价格为1GB流量1元;美国、英国和德国流量最便宜是0.5元每GB。
3886 1
阿里云流量怎么收费?0.8元每GB?地域不同流量价格不同
|
8月前
|
Java
SpringBoot--整合Logback,滚动记录+多文件
SpringBoot--整合Logback,滚动记录+多文件
|
前端开发 Java 应用服务中间件
idea中搭建springmvc中web项目环境
idea中搭建springmvc中web项目环境
|
SQL Java 数据库
Spring Data JPA 查询方法那些事
Spring Data 提供了几个接口供继承使用,如 JpaRepository,另外还规定了方法查询中的关键字,即你命名的查询方法需要符合规范。
987 0
|
8月前
|
数据库
数据库设计三范式
本文介绍数据库三范式:第一范式要求字段原子性,不可再分;第二范式要求消除部分依赖,表应描述单一主题;第三范式要求消除传递依赖。范式旨在减少冗余、提升数据一致性,但实际设计中需结合业务需求灵活应用,不必严格遵循。
|
机器学习/深度学习 算法
集成学习之GBDT
GBDT、Treelink、 GBRT(Gradient Boost Regression Tree)、Tree Net、MART(Multiple Additive Regression Tree)算法都是以决策树为基分类器的集成算法,通常由多棵决策树构成,通常是上百棵树且每棵树规模都较小(即树的深度都比较浅)。进行模型预测的时候,对于输入的一个样本实例X,遍历每一棵决策树,每棵树都会对预测值进行调整修正,最后得到预测的结果。假设$F_0$是设置的初值,$T_i$是一颗一颗的决策树。预测结果如下所示:
569 0
集成学习之GBDT
|
10月前
|
IDE Java 关系型数据库
如何利用Spring Initializr快速搭建项目
通过Spring Initializr可快速搭建Spring Boot项目。访问官网,配置项目信息,选择依赖(如Web、MyBatis、MySQL等),生成并下载项目压缩包,解压后导入IDE,自动构建完成,快速高效地初始化标准项目结构,提升开发效率。(238字)
1038 3
|
Python
详解Python中 import 关键词是如何实现的
import在python中是用来导入模块及第三方库的,那么为什么它具有这样的功能呢?
|
XML JSON Java
【SpringBoot学习笔记 二】YAML格式文件配置方式详解
【SpringBoot学习笔记 二】YAML格式文件配置方式详解
2373 0

热门文章

最新文章