MyBatis-Plus结合Layui实现分页方法

下面我将详细讲解“MyBatis-Plus结合Layui实现分页方法”的完整攻略,步骤如下:

1. 添加MyBatis-Plus和Layui相关依赖

在pom.xml文件中,添加以下两个依赖:

<!-- 添加MyBatis-Plus依赖 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.0</version>
</dependency>

<!-- 添加Layui依赖 -->
<dependency>
  <groupId>com.gitee.hjf</groupId>
  <artifactId>layui-spring-boot</artifactId>
  <version>2.6.6-3</version>
</dependency>

2. 配置MyBatis-Plus分页插件

在MyBatis的配置文件中,添加如下配置,配置MyBatis-Plus的分页插件:

<!-- 在MyBatis配置文件中添加如下配置 -->
<plugins>
  <!-- MyBatis-Plus分页插件 -->
  <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
    <!-- 数据库方言 -->
    <property name="dialectType" value="mysql"/>
  </plugin>
</plugins>

3. 在Controller中添加分页方法

在Controller中,添加分页方法,代码如下:

@GetMapping("/list")
public AjaxPageResult<T> list(@RequestParam(required = false, defaultValue = "1") Integer page,
                              @RequestParam(required = false, defaultValue = "10") Integer limit,
                              T params) {
    // 创建分页对象
    Page<T> pageInfo = new Page<>(page, limit);
    // 获取分页数据
    IPage<T> pageData = service.page(pageInfo, Wrappers.query(params));
    // 封装前端需要的分页对象
    return AjaxPageResult.success(pageData.getTotal(), pageData.getRecords());
}

在上述代码中,第一个参数为当前页数,第二个参数为每页显示的记录数,第三个参数为查询参数,具体可根据实际情况进行修改。该方法利用MyBatis-Plus提供的service.page()方法,实现分页查询,并将查询结果封装成前端需要的分页对象。

4.在前端页面中使用Layui实现分页

最后,在前端页面中引入Layui的分页组件,如下所示:

<!-- 在html页面中引入Layui组件库 -->
<head>
  <link rel="stylesheet" th:href="@{/layui/css/layui.css}">
</head>

<!-- 在body中添加分页代码 -->
<div id="page"></div>

<!-- 引入Layui JS脚本 -->
<script th:src="@{/layui/layui.js}"></script>

<!-- 在JS代码中初始化分页 -->
<script>
  // Layui分页组件的参数配置
  var pageConfig = {
    elem: '#page',
    count: total,
    limit: 10,
    layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
    curr: location.hash.replace('#!page=', ''),
    jump: function (obj, first) {
      if (!first) {
        location.href = '/list?page=' + obj.curr + '&limit=' + obj.limit;
      }
    }
  };

  // 初始化分页组件
  layui.use('laypage', function () {
    layui.laypage.render(pageConfig);
  });
</script>

在上述代码中,我们利用Layui提供的分页组件,将后端返回的分页数据展示到前端页面上。其中,total变量为后端返回的总记录数,可根据实际情况进行修改。

至此,我们就完成了“MyBatis-Plus结合Layui实现分页方法”的完整攻略。

下面是一个示例:

示例1:查询用户列表并分页展示

Controller代码:

@GetMapping("/user/list")
public AjaxPageResult<User> userList(@RequestParam(required = false, defaultValue = "1") Integer page,
                                     @RequestParam(required = false, defaultValue = "10") Integer limit,
                                     User params) {
    Page<User> pageInfo = new Page<>(page, limit);
    IPage<User> pageData = userService.page(pageInfo, Wrappers.query(params));
    return AjaxPageResult.success(pageData.getTotal(), pageData.getRecords());
}

前端JS代码:

<script>
  var pageConfig = {
    elem: '#userPage',
    count: ${total},
    limit: 10,
    layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
    curr: location.hash.replace('#!page=', ''),
    jump: function (obj, first) {
      if (!first) {
        location.href = '/user/list?page=' + obj.curr + '&limit=' + obj.limit;
      }
    }
  };
  layui.use(['laypage', 'layer'], function () {
    layui.laypage.render(pageConfig);
  });
</script>

示例2:查询订单列表并分页展示

Controller代码:

@GetMapping("/order/list")
public AjaxPageResult<Order> orderList(@RequestParam(required = false, defaultValue = "1") Integer page,
                                       @RequestParam(required = false, defaultValue = "10") Integer limit,
                                       String keyword) {
    Page<Order> pageInfo = new Page<>(page, limit);
    IPage<Order> pageData = orderService.page(pageInfo, Wrappers.<Order>lambdaQuery()
            .like(Order::getOrderNo, keyword)
            .orderByDesc(Order::getCreateTime));
    return AjaxPageResult.success(pageData.getTotal(), pageData.getRecords());
}

前端JS代码:

<script>
  var pageConfig = {
    elem: '#orderPage',
    count: ${total},
    limit: 10,
    layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
    curr: location.hash.replace('#!page=', ''),
    jump: function (obj, first) {
      if (!first) {
        location.href = '/order/list?page=' + obj.curr + '&limit=' + obj.limit;
      }
    }
  };
  layui.use(['laypage', 'layer'], function () {
    layui.laypage.render(pageConfig);
  });
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis-Plus结合Layui实现分页方法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Centos7下Redis3.2.8最新版本安装教程

    下面是Centos7下Redis3.2.8最新版本安装教程的完整攻略。 准备工作 确认Centos系统已经安装了yum软件包管理器,如果没有则需要使用以下命令安装: sudo yum install yum-utils 确认Centos系统已经安装了wget命令行工具,如果没有则需要使用以下命令安装: sudo yum install wget 安装Redi…

    database 2023年5月22日
    00
  • K8S prometheus operator监控工作原理介绍

    K8S Prometheus Operator是Kubernetes集群监控工具Prometheus的一个补充模块,它的主要作用是在Kubernetes集群中为Prometheus的监控对象(例如Pod、Service、Ingress等)自动提供配置和部署。 K8S Prometheus Operator的工作原理如下: 创建自定义资源定义(Custom R…

    database 2023年5月22日
    00
  • MySQL数据库存储过程和事务的区别讲解

    MySQL数据库存储过程和事务都是MySQL数据库的重要特性,但它们所起到的作用有所不同,下面详细讲解它们的区别。 一、MySQL存储过程 MySQL存储过程是指一组SQL语句的集合,这组SQL语句可以被存储在数据库中,并用一个名称来标识它。存储过程可用于简化复杂的SQL查询、优化性能、实现业务逻辑等。 1.1 存储过程的语法结构 MySQL存储过程的语法结…

    database 2023年5月22日
    00
  • Redis数据导入导出以及数据迁移的4种方法详解

    关于Redis数据导入导出以及数据迁移的4种方法详解,我来给你详细讲解一下。 1. Redis数据导入导出 Redis提供了2种导入导出数据的方式,分别是RDB快照和AOF文件。 RDB快照 RDB快照是Redis的一种备份机制,可以将当前内存中的数据保存到磁盘上的一个RDB文件中。它的优点是导出速度非常快,并且文件体积相对较小,适合搭建冷备份。 导出RDB…

    database 2023年5月22日
    00
  • MySQL中join查询的深入探究

    MySQL中Join查询的深入探究 在MySQL中,一般使用Join语句来实现多个数据表之间的查询,它可以将多个数据表连接在一起,并根据表之间的关联关系返回一并返回查询结果。在实际的应用场景中,合理的使用Join语句可以大大提升查询效率,从而优化整个系统性能。这里我们将从以下几个方面来深入探索MySQL中的Join查询: Join语句的分类 Join操作的原…

    database 2023年5月22日
    00
  • PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】

    PHP ADODB是一个轻量级数据库抽象层,可以让我们在不同的数据库系统中使用相同的API进行交互,从而简化了我们的开发过程。rs2html是PHP ADODB提供的一个函数,用于将从数据库中查询到的结果集生成对应的HTML表格。下面将详细讲解rs2html的使用方法和错误处理函数用法。 1. 使用rs2html生成HTML表格 使用rs2html生成HTM…

    database 2023年5月21日
    00
  • MySQL中explain使用快速查询手册

    MySQL中的EXPLAIN是用于优化查询的工具,可以帮助我们理解查询执行的方式,找出可能存在的性能问题,并提供优化建议。下面是使用快速查询手册的详细攻略: 1. 确认查询语句¶ 首先需要确认要分析的查询语句,例如以下这个简单的 SELECT 语句: SELECT * FROM `users` WHERE `name` LIKE ‘J%’; 2. 使用EXP…

    database 2023年5月22日
    00
  • SQL 合并相关行

    SQL 合并相关行是指将多行数据中的共同部分合并成一行。通常用于数据报表的生成。以下是SQL合并相关行的攻略: 使用GROUP BY语句 使用GROUP BY语句将相同的值合并在一起。例如,我们有一个表格包含国家、城市和人口数据: Country City Population China Beijing 21540000 China Shanghai 24…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部