Mybatis分页插件使用的详解

Mybatis分页插件 Mybatis分页插件PageHelper通过简单的配置和使用,可以快速实现分页查询功能,极大地简化了开发过程。同时,了解分页查询的SQL实现原理,有助于我们更好地理解和使用分页插件 阅读详情

前言

关于分页,一般来说rowBounds 这种假分页都上不了台面,我们往往都选哟真分页,那么还不想搞得很麻烦,Mybatis的分页插件就为后端程序员解决了这个问题

例子

首先需要导入依赖, 没错pagehelper

    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.2.0</version>
    </dependency>

看看怎么用,首先我们不要条件,直接分
当然了我喜欢自己事先写一个page的实体类👇

public class page<T> {
    private int pageNumber;
    private int pageSize;
    private int total;
    private List<T> rows;

    private int pageCount;
        private int pre;
        private int next;
        private int start; //limit ?,?
        private boolean first;
        private boolean last;

    public int getPageCount() {
        return (getTotal()+getPageSize()-1)/getPageSize();
    }

    public int getPre() {
        if(getPageNumber()==1)
        return 1;
        return getPageNumber()-1;
    }

    public int getNext() {
        if(getPageNumber()==getPageCount())
        return getPageCount();
        return getPageNumber()+1;
    }

    public int getStart() {
        return (getPageNumber()-1)*pageSize;
    }


    public boolean isFirst() {
        return getPageNumber()==1;
    }

    public boolean isLast() {
        return getPageNumber()==getPageCount();
    }

    public int getPageNumber() {
        return pageNumber;
    }

    public void setPageNumber(int pageNumber) {
        this.pageNumber = pageNumber;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public List<T> getRows() {
        return rows;
    }

    public void setRows(List<T> rows) {
        this.rows = rows;
    }
}

Controller👇

    @RequestMapping(value = "/querySome", method = RequestMethod.POST)
    @ResponseBody
    public ETResponse querySome(int pageNumber, int pageSize) {
        List<Food> rows = service.querySome(pageNumber, pageSize);
        PageInfo<Food> info = new PageInfo<>(rows);//Pageinfo 是个Mybatis写的page
        page<Food> pa = new page<>();
        pa.setRows(info.getList());
        pa.setTotal(Integer.parseInt(info.getTotal() + ""));
        pa.setPageSize(pageSize);
        pa.setPageNumber(pageNumber);
        return sr.setResponse(pa,"200");
    }

流程就是

查出结果集
创建Pageinfo的对象
组装我们自己的page对象
发送page

当然了,有没有简化版?这我还得自己建个类,
Controller

    @RequestMapping(value = "/querySome", method = RequestMethod.POST)
    @ResponseBody
    public ETResponse querySome(int pageNumber, int pageSize) {
        List<Food> rows = service.querySome(pageNumber, pageSize);
        PageInfo<Food> info = new PageInfo<>(rows);//Pageinfo 是个Mybatis写的page
        return sr.setResponse(info,"200");//负责向前台发送response.data.data的方法
    }

是的没错,直接把pageinfo的对象传给前台也不是不行,因为它本身就是一个page对象,只是它里面的一些属性我们不是很清楚,
下面是pageInfo源码中的属性

private int pageNum;
    private int pageSize;
    private int size;
    private long startRow;
    private long endRow;
    private int pages;
    private int prePage;
    private int nextPage;
    private boolean isFirstPage;
    private boolean isLastPage;
    private boolean hasPreviousPage;
    private boolean hasNextPage;
    private int navigatePages;
    private int[] navigatepageNums;
    private int navigateFirstPage;
    private int navigateLastPage;

我们发现好像没有我们的要的list结果集
我找了找在它父类中呢
在这里插入图片描述
在这里插入图片描述
很明显了吧,所以以后需要什么属性直接get也好
ok说了这么多,看看Service

 public List<Food> querySome(int pageNumber, int pageSize) {
        PageHelper.startPage(pageNumber,pageSize);//负责分页
        return dao.querySome();//传空参给dao层
    }

Dao层+mapper.xml文件

 List<Food> querySome();
 <select id="querySome" resultType="food">
	select * from food
 </select>

那有条件查询的分页呢?
很简单我们只需要在Service中把条件给dao层就ok了

 public List<Food> querySome(String name,int pageNumber, int pageSize) {
        PageHelper.startPage(pageNumber,pageSize);//负责分页
        return dao.querySome(name);//传空参给dao层
   }
 List<Food> querySome(String name);
 <select id="querySome" resultType="food">
	select * from food where name =#{name}
 </select>

总结

ok了MyBatis的分页插件学会了的话,记得给个赞哦~

【STM32篇】DRV8425驱动步进电机 【STM32篇】在上篇文章中使用了HR4988实现了步进电机的驱动,在实际运用过程,4988驱动步进电机会存在电机噪音太大的现象。本次将向各位友友介绍一个驱动简单且非常静音的一款步进电机驱动IC。 阅读详情

相关推荐

Shader Graph入门

Shader Graph 简介

zaizai1007的博客 1万+

mybatis分页插件的详细理解和使用

分页是一种将所有数据分段展示给用户的技术。用户每次看到的不是全部数据,而是其中一部分,如果在其中没有找到自己想要的内容,用户可以通过制定页码或者是翻页的方式转换可见内容,直到找到自己想要的内容为止。

m0_56245143的博客 1064

《基于YOLOv8的隧道拱顶裂缝扩展监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!!项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

MyBatis分页插件详解以及使用

MyBatis 分页插件是一个用于简化 MyBatis 分页查询的工具,它可以自动拦截分页查询语句,并根据传入的分页参数进行分页处理,最终返回分页结果。MyBatis 分页插件支持多种数据库,包括 MySQL、Oracle、SQL Server 等。同时,它还提供了丰富的配置选项,可以让我们根据实际需求进行灵活配置。MyBatis 分页插件是一个非常实用的工具,可以大大简化 MyBatis 分页查询的编写和调用过程。在使用 MyBatis 进行分页查询时,推荐使用 MyBatis 分页插件

weixin_54590410的博客 976

Mybatis分页插件

1、分页插件 MjBatis通过提供插件机制,让我们可以根据自己的需要去增强MyBats的功能。需要注意的是,如果没有完全理解lMy Batis的运行原理和插件的工作方式,最好不要使用插件,因为它会改变系底层的工作逻辑,给系统带来很大的影响。 MyBatis插件可以在不修改原来的代码的情况下,通过拦截的方式,改变四大核心对象的行为,比如处理参数,处理SQL,处理结果。 Mybatis插件典型适用场景 分页功能 mybatis分页默认是基于内存分页的(查出所有,再截取),数据量大的情况下效率较低,不过使

IT张zx 884

详解Mybatis分页插件【PageHelper】

以百度搜索为例,如下所示。

siaok的博客 8128

Mybatis 分页插件使用

pageHelper mybatis分页

Alex_cf的博客 3636

Mybatis 是如何进行分页的?分页插件的原理是什么?

MyBatis 通过手动分页、`RowBounds` 分页以及分页插件等多种方式实现分页。手动分页直接在 SQL 语句中使用数据库的分页功能,适用于简单的分页需求;`RowBounds` 是一种内存分页方式,适用于小数据量;而分页插件则通过拦截 SQL 语句,在数据库层面自动实现分页,是一种高效、易用的分页方案。分页插件,如 PageHelper 和 MyBatis-Plus,利用拦截器机制,自动为 SQL 语句添加分页功能,并封装结果集,使得开发者可以更轻松地处理分页查询。

Flying_Fish_roe的博客 2169

MyBatis——分页插件(重要)

分页是开发中必备的技术,MyBatis分页插件提供了大量的信息,熟练掌握该插件对于开发效率非常重要!

雷神乐乐的博客 1731

MyBatis 是如何进行分页的?分页插件的原理是什么?

分页(Pagination)是将一个大的数据集划分为多个小的部分(页面),每个页面包含一定数量的记录。分页的目的是使用户能够方便地查看数据集中的一部分,而不是一次性加载和展示整个数据集。举个例子,假设有一个包含 1000 条用户数据的数据库表。加载时间过长:加载大量数据会消耗大量时间,给用户带来较差的体验。浏览效率低:用户不需要查看所有 1000 条记录,他们可能只关心其中的一部分数据。内存压力大:一次性加载大量数据可能导致服务器内存占用过高,影响系统性能。

青年有志 1522

MyBatis逆向工程&分页插件

MyBatis逆向工程&分页插件

Zhuxiaoyu_91的博客 1815

Mybatis分页插件-PageHelper的使用

Mybatis分页插件-PageHelper的使用怎样配置mybatis这里就不提了,我来说说我配置这个分页插件的过程吧。下载JAR包分页插件pagehelper.jar:https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/ http://repo1.maven.org/ma

新涯特 8万+

mybatis分页插件

前言 其实吧,这个分页的封装是我从mybatis实战上抄的,然后又重构了下代码,形成了自己的。现在之所以会记录一下,主要原因是出现了质变———对foreach的支持,而解决这个问题的过程中,我感觉,应该基本上使用上没有多少局限行了。下面说说实际的吧。 设计 基本的设计思路,是使用mybatis插件,首先是下面这一串注解: @Intercepts({@Signature(type = Stateme...

征途无悔 1590

MyBatis使用PageHelper实现分页查询

添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency> 配置分页插件MyBatis的核心配置文件中配置插件 <plugins> <!--设置分页插件--.

Lifelong learning 4260

mybatis分页插件使用

mybatis分页插件的简单使用

zgm_dj的博客 3515

【半自动ORM框架 | MyBatis分页插件使用

2022.10.12:初学Java写简单的后台管理难免会受到写分页代码的折磨(我是被折磨了),但是接触到MyBatis框架之后,只需要几个配置和几行代码就可以完成以前好几倍的工作量,本篇文章简述了MyBatis分页插件的整体使用流程,如果能帮到你,倍感荣幸!

weixin_45973679的博客 1082

MyBatisMyBatis分页插件使用

浅析分页插件的原理:分页插件内置了一个拦截器,当我们将分页插件引入项目中后,一旦调用查询方法就会触发分页插件中的拦截器,拦截器会会将自动将查询结果进行分页展示。由于分页查询比较繁琐,代码逻辑很简单,但是要写很多判断,所以为了简化开发就可以直接使用分页查询插件。CRUD (创建:Create,读取:Read,更新:Update,删除:Delete)IDUS(增:Insert,删:Delete,改:Update,查:Select)其中2,3,4,5,6的数量由导航分页展示数。知道分页查询的规律,同时知道。

热爱编程、热爱生活、热爱探索 1653

MyBatis分页插件PageHelper的使用MyBatis的特殊符号---详细介绍

本文章详细讲述了MyBatis实现分页功能及MyBatis的特殊符号

m0_73192864的博客 1153

Mybatis分页插件使用

mybatis分页插件使用

qq_52379479的博客 395

Mybatis分页插件PageHelper的使用与原理解析

文章全面介绍mybatis分页插件的基本概念、使用方法、以及为何我们需要使用它。我们将通过五个部分来详细讲解,包括“是什么”、“如何使用”、“为什么要用它”、“原理”和“总结”。

程序员Forlan的博客 2347
上一篇: el-dialog和el-form搭配使用时无法重置表单的问题
下一篇: 通过一个登录模块掌握Cookie Session Redis三把工具刀
商朝
博客等级 码龄7年 181粉丝 105原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商朝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值