Mybatis分页插件使用的详解[通俗易懂]

Mybatis分页插件使用的详解[通俗易懂]前言关于分页,一般来说rowBounds这种假分页都上不了台面,我们往往都选哟真分页,那么还不想搞得很麻烦,Mybatis的分页插件就为后端程序员解决了这个问题例子首先需要导入依赖,没错pagehelper<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><v

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言

关于分页,一般来说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");
}

流程就是

:root{--mermaid-font-family:"trebuchet ms", verdana, arial;}

查出结果集

创建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的分页插件学会了的话,记得给个赞哦~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184313.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • nessus8.15激活成功教程_etc怎么看激活成功了没有

    nessus8.15激活成功教程_etc怎么看激活成功了没有0x01下载NESSUS官网https://www.tenable.com/downloads/nessus离线插件all:https://plugins.nessus.org/offline

  • Java课程设计之 学生成绩管理系统「建议收藏」

    Java课程设计之 学生成绩管理系统「建议收藏」实现内容:设计开发一个学生成绩管理系统(1)根据实现的功能,划分出合理的对象类,明确各个对象类之间的关系。为各个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符。功能要求:(1)录入成绩(2)查询成绩(3)成绩排序(4)修改成绩(5)删除成绩(6)将数据保存在数据库表中该课程设计涉及MySQL数据库,建表操作,java操作SQL语句(JDBC数据库操作)以及JavaS

  • JavaScript动画基本原理

    JavaScript动画基本原理JavaScript动画基本原理在现在做页面很多时候都会用上动画效果。比如下拉菜单,侧边搜索栏,层的弹出与关闭等等。通常我们实现这些动画效果可以采用JavaScript与CSS3两种方式来实现。本文主要介绍JavaScript动画,CSS3的动画下次在总结。对于JavaScript动画目前有很多的动画插件库,如:Jquery等等.以下就简单介绍以下JavaScript动画的实现原理。1.动

    2022年10月16日
  • python读txt文件中文乱码_pycharm读取文件乱码

    python读txt文件中文乱码_pycharm读取文件乱码python写入TXT文件乱码,且utf-8无效使用write函数写入txt文件,enconding=‘utf-8’,得到的文件中部分中文乱码。解决:将代码改为:f1=open(“h20FL2.txt”,‘w’,encoding=‘gb18030’,eerrors=“ignore”)

  • MQTT–入门「建议收藏」

    MQTT–入门「建议收藏」一、简述 MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网

  • 《光棍节程序员闯关秀》闯关攻略

    《光棍节程序员闯关秀》闯关攻略https://1111.segmentfault.com《光棍节程序员闯关秀》     程序员们,欢迎来攻!!!在之前的基础上,重新整理了一遍,之前才闯到第8关,然而,昨天整理文章的时候,网站服务器崩了,所以,可遗憾了,还好今天,正常了,把第8关过了,呵呵,第九关,真的不想过了,就这样吧,至于SegmentFault的账号早就有了,还是蛮喜欢这个网站的。我发现所有的key可以都在变

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号