Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]

Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。使用pageHelper实现分页查询其实非常简单,共两步:一、导入依赖;二、添加配置;三、应用;那么开始,第一步:pom.xml添加依赖:<!–分页插件pagehelper–><dependency><groupId>com…

大家好,又见面了,我是你们的朋友全栈君。

以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。

使用pageHelper实现分页查询其实非常简单,共两步:

一、导入依赖;   

二、添加配置;   

 

 

那么开始,

第一步:

pom.xml添加依赖:

<!--分页插件 pagehelper -->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <!-- 特别注意版本问题 -->
   <version>1.2.3</version>
</dependency>

 第二步:

aplication.yml添加配置:

#分页pageHelper
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true

 ·helper-dialect:

配置使用哪种数据库语言,不配置的话pageHelper也会自动检测

·reasonable:

配置分页参数合理化功能,默认是false。 #启用合理化时,如果pageNum<1会查询第一页,如果pageNum>总页数会查询最后一页; #禁用合理化时,如果pageNum<1或pageNum>总页数会返回空数据。

·params:

为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值; 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。

·support-methods-arguments:

支持通过Mapper接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。

第三步,

先将需要查询的数据库表建起来,简单填充数据:

Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]

然后mapper层写上查询该表数据返回List的方法:

//查询所有
List<User> queryUserInfo();

在service以及impl也写上相关方法:

//查询所有
List<User> queryUserInfo();
@Override
public List<User> queryUserInfo() {

    return userMapper.queryUserInfo();
}

相关的mapper.xml就不做过多介绍了,就是一个查询。

 

ok,接下来开始使用分页插件,配合上面的查询实现分页查询:

在userService上添加 分页查询方法2个:

List<User> findAllUserByPageF(int pageNum,int pageSize);

PageInfo<User> findAllUserByPageS(int pageNum, int pageSize);

userServiceImpl上添加 分页查询实现:

@Override
public List<User> findAllUserByPageF(int pageNum, int pageSize) {
    // TODO Auto-generated method stub
    PageHelper.startPage(pageNum, pageSize);
    List<User> lists = userMapper.queryUserInfo();
    return lists;
}

@Override
public PageInfo<User> findAllUserByPageS(int pageNum, int pageSize) {
    // TODO Auto-generated method stub
    PageHelper.startPage(pageNum, pageSize);
    List<User> lists = userMapper.queryUserInfo();
    PageInfo<User> pageInfo = new PageInfo<User>(lists);
    return pageInfo;

}

最后在controller写上测试接口,

@GetMapping("/testPageHelper1")
public PageInfo<User> testPageHelper1(){
    PageInfo<User> queryResult = userService.findAllUserByPageS(1, 5);
    return queryResult;
}

@GetMapping("/testPageHelper2")
public List<User> testPageHelper2(){
    List<User> queryResult = userService.findAllUserByPageF(1, 5);
    return queryResult;
}

 

然后用POSTMAN 分别调接口看看结果:

Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]

 

Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]

 

最后附上分别调用10次的性能分析简图(来自DRUID):

Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]

OK,简单实战介绍到此吧。

 

 

PageInfo的参数解释,可以看看我这篇:

https://blog.csdn.net/qq_35387940/article/details/105067813 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137053.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • settime和setinterval_setinterval是异步还是同步

    settime和setinterval_setinterval是异步还是同步setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。这两个函数的区别是:setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。有一次我没有分清,使用了setInterval,导致电脑崩溃了。setTimeout表面上是只执行一次,只是起到延迟作用。但是也可以通过创建一个函数循环重复调用…

    2022年10月4日
    2
  • 跨域访问是什么_什么是跨域?怎么解决跨域问题

    跨域访问是什么_什么是跨域?怎么解决跨域问题跨域访问是什么同源策略1995年,同源政策由Netscape公司引人浏览器。目前,所有测览器都实行这个政策。同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。随着互联网的发展,“同源政策”越来越严格。目前,如果非同源,共有三种行为受到限制:】Cookie、LocalStorage和IndexDB无法读取DOM无法获得AJAX请求不能发送虽然这些限制是必要的,但是有时很不方便,合理的用途也受到影响。所谓“同源”指的是“三个相同”:协议相同、域名相同以及端相同。域名是什么

    2022年10月1日
    3
  • pycharm2021 激活码破解方法

    pycharm2021 激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    68
  • 计算机代码1e1代表什么意思,热水器上显示E1是什么意思

    计算机代码1e1代表什么意思,热水器上显示E1是什么意思再好的产品也有可能会出现故障,如果家里的壁挂炉出现故障了,显示了一些字母代码,你知道这些字母代码是什么意思吗?又该采取什么措施去解决呢?下面小编总结了一些品牌壁挂炉的故障代码,供大家参考。威能壁挂炉威能燃气壁挂炉运行时吐过发生故障,显示屏上会出现一个故障代码,多个代码交替出现,则说明是同时发生了多个故障。威能壁挂炉故障代码含义解析:F.0含义:供水温度传感器(NTC)故障原因:NTC故障,…

    2022年5月30日
    34
  • QTreeView 使用

    QTreeView 使用QTreeView结构介绍:树控件的标题QHeaderView,相关用法参考Qt文档。控件使用的model/view框架,QTreeView实现了QAbstractItemView里声明的相关接口,由QAbstractItemModel为控件提供显示数据。自定义数据,通过QStandardItemModel和QTreeView连用,用QStandardItem属性介绍:…

    2022年6月2日
    49
  • 子网划分和计算方法(附习题详解)

    子网划分和计算方法(附习题详解)一.子网划分作用1.计算网络号,通过网络号选择正确的网络设备连接终端设备1)清楚IP地址四点段点分十进制数和子网掩码,对应的网络号是什么2)交换机是用来连接相同网络的设备,路由器是用来连接不同网段的设备网络号一样的,即在相同网段,网络号不一样的,即不同网段3)计算方法把十进制数的IP地址换算成二进制数,把子网掩码也由十进制数换算成二进制数,两对二进制数对齐做“与”运算,即可得出网络号。2.根据网络的规模,可以对局域网(内网)进行网络地址规划二.IP地址格…

    2022年6月27日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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