广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >mybatis数据库分页查询
  • 685
分享到

mybatis数据库分页查询

mybatis数据库java 2023-10-07 14:10:26 685人浏览 薄情痞子
摘要

数据库分页查询 分页查询的优点PageHelper实现分页查询原理PageHelper的基本使用编写持久层编写业务逻辑层编写控制层 使用JsonPage返回结果 分页查询的优点 P

数据库分页查询

分页查询的优点

在这里插入图片描述
在这里插入图片描述

PageHelper实现分页查询原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<dependency>            <groupId>com.GitHub.pagehelpergroupId>            <artifactId>pagehelper-spring-boot-starterartifactId>        dependency>

在这里插入图片描述

PageHelper的基本使用

编写持久层

在这里插入图片描述

 // 分页查询所有订单的方法    // 适用 PageHelper 框架完成分页查询的原理是在 sql 语句运行时,在 sql 语句后添加 limit 关键字    // 所以在持久层编写方法时,没有任何分页查询的特征,也无需关注分页业务(注解和 xml 都是)    @Select("select id, user_id, commodity_code, count, money from order_tbl")    List<Order> findAllOrders();

在这里插入图片描述

编写业务逻辑层

下面就转到业务逻辑层实现类,先编写一个方法使用PageHelper的功能

先不用写接口,直接在业务逻辑层中写方法

OrderServiceImpl添加方法

// 参数page是页码,pageSize是每页条数public PageInfo<Order> getAllOrdersByPage(Integer page, Integer pageSize){    // PageHelper框架实现分页的方法,就是在执行查询之前,设置分页条件    // 使用PageHelper.startPage方法设置本次查询要查询的页码和每页条数    // PageHelper的页码从1开始,也就是page是1,就查询第一页    PageHelper.startPage(page,pageSize);    // 上面的分页条件设置完毕后,下面进行的查询,就会在sql语句后自动添加limit关键字    List<Order> list=orderMapper.findAllOrders();    // 上面的list就是要查询的当页数据,但是不包含分页信息(总页数,总条数,有没有上一页等)    // 所以作为分页工具,必须返回包含这个分页信息的对象,也就是声明的返回值PageInfo    // 当前方法返回时,直接实例化PageInfo对象,构造方法中会自动计算分页信息    // 同时传入list作为参数,将list中的数据赋值给PageInfo    return new PageInfo<>(list);}

编写控制层

在这里插入图片描述

@Autowired//      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓private OrderServiceImpl orderService;@GetMapping("/page")@apiOperation("分页查询所有订单")@ApiImplicitParams({        @ApiImplicitParam(value = "页码",name="page",example = "1"),        @ApiImplicitParam(value = "每页条数",name="pageSize",example = "10")})public JSONResult<PageInfo<Order>> pageOrder(Integer page,Integer pageSize){    PageInfo<Order> pageInfo = orderService.getAllOrdersByPage(page, pageSize);    return jsonResult.ok("查询完成!",pageInfo);}}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

附:PageInfo全部分页信息属性

//当前页private int pageNum;//每页的数量private int pageSize;//当前页的行数量private int size;//当前页面第一个元素在数据库中的行号private int startRow;//当前页面最后一个元素在数据库中的行号private int 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;

使用JsonPage返回结果

在这里插入图片描述
在这里插入图片描述

        <dependency>            <groupId>com.github.pagehelpergroupId>            <artifactId>pagehelperartifactId>            <version>5.2.0version>        dependency>

在这里插入图片描述

package cn.tedu.csmall.commons.restful;import com.github.pagehelper.PageInfo;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import java.io.Serializable;import java.util.List;@Datapublic class JsonPage<T> implements Serializable {    // JsonPage 是用于同一代替 PageInfo 或 Page 这样分页查询结果类型的    // 其中要包含分页信息和查询到的数据两方面    // 我们这里只声明少量分页信息即可,实际开发中,有额外需要再添加额外属性    @ApiModelProperty(value = "总页数", name = "totalPages")    private Integer totalPages;    @ApiModelProperty(value = "总条数", name = "totalCount")    private Long totalCount;    @ApiModelProperty(value = "页码", name = "page")    private Integer page;    @ApiModelProperty(value = "每页条数", name = "pageSize")    private Integer pageSize;    // 还要声明一个属性保存查询到的数据    @ApiModelProperty(value = "分页数据", name = "list")    private List<T> list;    // 下面编写一个方法,能够将PageInfo类型对象转换为JsonPage类型对象返回    public static <T> JsonPage<T> restPage(PageInfo<T> pageInfo){        // 下面编写的是转换代码,要将pageInfo中相同意义的属性赋值到JsonPage对象中        JsonPage<T> jsonPage=new JsonPage<>();        jsonPage.setTotalPages(pageInfo.getPages());        jsonPage.setTotalCount(pageInfo.getTotal());        jsonPage.setPage(pageInfo.getPageNum());        jsonPage.setPageSize(pageInfo.getPageSize());        // 别忘了分页数据的复制过程        jsonPage.setList(pageInfo.getList());        // 最后返回转换完成的对象!        return jsonPage;    }}

在这里插入图片描述

// 声明返回 JsonPage 类型的分页查询订单的方法    JsonPage<Order> getAllOrdersByPage(Integer page, Integer pageSize);

csmall-order-webapi项目OrderServiceImpl实现类中进行修改

//     ↓↓↓↓↓↓↓↓public JsonPage<OrderTb> getAllOrdersByPage(Integer pageNum, Integer pageSize){    PageHelper.startPage(pageNum,pageSize);    List<OrderTb> list= orderMapper.findAllOrders();    //     ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓    return JsonPage.restPage(new PageInfo<>(list));}

业务逻辑层返回值的修改影响控制器方法的调用

再去修改OrderController中方法调用的位置

@Autowired//      ↓↓↓↓↓↓↓↓↓↓↓↓private IOrderService orderService;//...//                ↓↓↓↓↓↓↓↓public JsonResult<JsonPage<Order>> pageOrders(Integer pageNum, Integer pageSize){      // 分页调用      //↓↓↓↓↓↓        ↓↓↓↓↓↓↓↓↓        JsonPage<Order> jsonPage=orderService.getAllOrdersByPage(          pageNum,pageSize);      //↓↓↓↓↓↓↓↓↓↓      return JsonResult.ok("查询完成",jsonPage);}

保证启动Nacos\Seata

重启order测试

能出现查询结果即可

来源地址:https://blog.csdn.net/weixin_44807758/article/details/130419742

--结束END--

本文标题: mybatis数据库分页查询

本文链接: https://www.lsjlt.com/news/424528.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis数据库分页查询
    数据库分页查询 分页查询的优点PageHelper实现分页查询原理PageHelper的基本使用编写持久层编写业务逻辑层编写控制层 使用JsonPage返回结果 分页查询的优点 P...
    99+
    2023-10-07
    mybatis 数据库 java
  • Mybatis-Plus分页查询
    分页插件 调用通用mapper提供的selectPage分页方法; 2、自定义查询方法使用分页功能:     - mapper接口中的方法返回值是Page类型     - 第一个参数要求是Page类型 3、映射文件中可以使用sql标签定义公...
    99+
    2023-08-31
    mybatis java mysql
  • 【Java】Mybatis查询数据库
    文章目录 MyBatis查询数据库1. MyBatis 是什么?2. 为什么要学习MyBatis?3. 怎么学MyBatis?4. 第一个MyBatis查询4.1 创建数据库和表4.2 添加M...
    99+
    2023-09-06
    java mybatis spring
  • Mybatis实现分页查询
    一. 简单分页查询——limit 使用select查询时,如果结果集数据量较大,一个页面难以处理,就会采用分页查询。 分页查询,就是从结果集中拿出指定的第n页到第m页的数据来显示。 // limit分页公式 // currentP...
    99+
    2023-09-12
    mybatis java mysql
  • 如何用数据库分页查询语句进行数据库查询
    这篇文章主要介绍“如何用数据库分页查询语句进行数据库查询”,在日常操作中,相信很多人在如何用数据库分页查询语句进行数据库查询问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何...
    99+
    2022-10-18
  • Mybatis-Plus——分页+模糊查询
    建表:  create table pms_brand( brand_id bigint not null auto_increment comment '品牌id', name ...
    99+
    2023-09-22
    mybatis mysql
  • Mybatis-Plus实现分页查询
    Mybatis-Plus实现分页查询 文章目录 Mybatis-Plus实现分页查询1.1技术概述1.2技术详述1.2.1配置分页插件1.2.2自定义分页1、如果你的mapper没有继承BaseMapper2、如果你的mapper继...
    99+
    2023-08-17
    mybatis java spring boot
  • mybatis-plus分页查询临时返回所有数据
    我们在编写业务逻辑时候,有时需要借助mybatis-plus分页查询,但需要返回全部符合条件的数据,经过实践发现,只需要把 Page 对象的 current,size 全部重置为 -1 即可实现全部数据的返回。  示例代码: publ...
    99+
    2023-09-11
    mybatis java mysql
  • 使用Spring MVC与Mybatis如何对Mysql数据库进行分页查询
    使用Spring MVC与Mybatis如何对Mysql数据库进行分页查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一步,搭建这个小案例,引入spring和mybtis的...
    99+
    2023-05-31
    springmvc mysql mybatis
  • MyBatis-Plus实现2种分页方法(QueryWrapper查询分页和SQL查询分页)
    目录 1 MyBatisPlusConfig2 UserPagination3 Mapper3.1 UserMapper.java3.2 UserMap...
    99+
    2022-11-12
  • mybatis plus 分页查询出现count()
    出现问题现象 使用mybatisplus分页时候count语句出错,控制台打印的sql为### The error may involve defaultParameterMap, The error occurred while sett...
    99+
    2023-08-17
    mybatis java mysql
  • Mybatis分页查询怎么实现
    小编给大家分享一下Mybatis分页查询怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们实现查询除了@org.junit.Test  ...
    99+
    2023-06-28
  • MyBatis-Plus联表查询及分页
    MyBatis-Plus联表查询及分页 一、准备工作1、数据库结构以及数据2、依赖3、配置类让mybatis-plus-join在DataScopeSqlInjector中生效4、启动类排除MPJSqlInjector.class ...
    99+
    2023-08-16
    mybatis mysql java
  • 数据库中怎么实现分页查询
    数据库中怎么实现分页查询,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、 MySQL 数据库分页查询 MySQL数据库实现分...
    99+
    2022-10-18
  • TK-MyBatis分页查询怎么使用
    本篇内容介绍了“TK-MyBatis分页查询怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!记 tkMybatis 查询出一个 &nb...
    99+
    2023-06-21
  • mybatis-plus分页查询三种方法
    mybatis-plus分页查询 一、前期准备表1、配置类 二、使用selectPage1、Service2、结果 三、使用2种分页查询的写法1、xml2、Mapper3、第一种写法4、第一种结果5、第二种写法6、第二种结果...
    99+
    2023-08-20
    mybatis java 开发语言
  • MyBatis-Plus 分页查询以及自定义sql分页
    一、引言 分页查询每个人程序猿几乎都使用过,但是有部分同学不懂什么是物理分页和逻辑分页。 物理分页:相当于执行了limit分页语句,返回部分数据。物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般适用于数据量比较...
    99+
    2023-09-01
    mybatis sql mysql
  • 在SpringMVC中使用Mybatis怎么实现对Mysql数据库进行分页查询
    在SpringMVC中使用Mybatis怎么实现对Mysql数据库进行分页查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一步,搭建这个小案例,引入spring和mybti...
    99+
    2023-05-31
    springmvc mybatis mysql
  • TK-MyBatis分页查询的具体使用
    记 tkMybatis 查询出一个  List集合 该集合已经做好了一层分页Page封装 即查询出的list 使用类型判断 instanceof Page 为true 但是,中途不明...
    99+
    2022-11-12
  • Mybatis分页查询的实现(Rowbounds和PageHelper)
    我们实现查询除了 @org.junit.Test public void test02(){ SqlSession session = MybatisUtil...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作