热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mybatis实现分页查询(两种方式:1pageHelper插件2手写)

方法1:整合pageHelper分页插件优点:快捷,只需要你有一个查询全部数据的方法即可缺点:对于初学者来说,

方法1:整合pageHelper分页插件


优点:快捷,只需要你有一个查询全部数据的方法即可

缺点:对于初学者来说,不了解内部的原理

前提:需要先实现一个最简单的 查询全部数据的方法,不会的可以先去搭建一个项目

        SpringBoot 整合mybatis、mybatis日志、并测试findAll查询数据库方法:

        https://blog.csdn.net/KangYouWei6/article/details/127021894


1.添加依赖

添加到pom.xml中的dependencies标签中

刷新maven


com.github.pagehelperpagehelper-spring-boot-starter1.3.0

2.配置 => properties / yml

注意yml的语法,开头那个必须顶格


pagehelper:helperDialect: mysqlreasonable: true # 修改默认值

3.写方法

在UserService里面


//分页查询List findPage(Integer pageNo,Integer pageSize);

在UserServiceImpl里面


//分页查询@Overridepublic List findPage(Integer pageNo, Integer pageSize) {PageHelper.startPage(pageNo,pageSize);return userMapper.list();//这里的list方法是查询全部数据的方法}

在UserController里面



//分页查询@RequestMapping("findPage")public List findPage(int pageNo,Integer pageSize){return userService.findPage(pageNo,pageSize);}

4.测试


在数据库中多添加几条数据

在启动类(HelloApplication)里面启动

在网页或者PostMan上输入


 localhost:8081/user/findPage?pageNo=1&pageSize=2

方法2:自己写

优点:对于初学者来说,可以了解分页查询内部的原理

缺点:比较麻烦

为什么用map

因为前面的findAll是查询出一些数据,直接用List 这种接收就可以了

但是 分页查询,需要得到的结果是下图这种json数据

需要有 一个total 一个data,只用List是不行的

mapper层

List selectPage(Integer pageNum, Integer pageSize);//分页查询
Integer countAll ();//统计

service层

List selectPage(Integer pageNum, Integer pageSize);//分页查询Integer countAll ();//统计

impl层

//分页查询@Overridepublic List selectPage(Integer pageNum, Integer pageSize) {pageNum = (pageNum - 1) * pageSize;return userMapper.selectPage(pageNum,pageSize);}//统计@Overridepublic Integer countAll() {return userMapper.countAll();}

controller层

/*** 分页查询* @param pageNum* @param pageSize* @return*/@GetMapping("/page")public Map findPage(@RequestParam int pageNum, @RequestParam int pageSize){//分页查询的数据放到 data 里面List data =userService.selectPage(pageNum,pageSize);//统计的数据放到 total 里面Integer total = userService.countAll();Map res = new HashMap<>();res.put("data",data);res.put("total",total);return res;}

xml层

注意修改 resultType里面的user路径

url

http://localhost:8081/user/page?pageSize=5&pageNum=1




推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有