Mybatis-plus的两种分页方案

Mybatis-plus的两种分页方案

底层的逻辑是写出最终执行的sql或者selectPage方法等,中间需要配置相应的page拦截器。

注意:如没有配置拦截器,直接执行就会存在total的值为0,此方法无效。

1. 基于MP的IPage接口实现

使用步骤:

  • 引入pom配置
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
  • 配置分页拦截器
@Configuration
public class MybatisPlusConfig {/*** 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 		  MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));return interceptor;}
}
  • 执行测试
@Testpublic void testSelectPage(){Page<User> page = new Page<>(0, 5);page.addOrder(OrderItem.asc("age"));page.setOptimizeCountSql(false);//关闭自动优化Page<User> userIPage = userMapper.selectPage(page, Wrappers.<User>lambdaQuery().eq(User::getAge, 19).like(User::getName, "bob"));assertThat(page).isSameAs(userIPage);log.error("总条数 -------------> {}", userIPage.getTotal());log.error("当前页数 -------------> {}", userIPage.getCurrent());log.error("当前每页显示数 -------------> {}", userIPage.getSize());List<User> records = userIPage.getRecords();assertThat(records).isNotEmpty();}

2. 基于PageHelper的第三方组件实现

  • 引入配置
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><!-- pagehelper 包含该依赖存在版本冲突,因此不建议和 mp 一起混用 --><exclusions><exclusion><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.11</version>
</dependency>
  • 配置拦截器
@Configuration
public class MyBatisPlusConfig {// 基于PageHelper@BeanPageInterceptor pageInterceptor() {PageInterceptor pageInterceptor = new PageInterceptor();Properties properties = new Properties();properties.setProperty("helperDialect", "mysql");pageInterceptor.setProperties(properties);  // 由此可进入源码,return pageInterceptor;}}
  • 执行测试
@Test
void test() {// pagehelperMap<String, Object> params = new HashMap<>();params.put("name", "%");PageHelper.startPage(3, 2);List<User> list = userMapper.pageUser(params);System.out.println("list.size=" + info.getList().size());log.info(JSONUtil.toJsonStr(info.getList()));System.out.println("page.total=" + info.getTotal());
}
########分隔符#########
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pimee.bootmybatisplus.mapper.UserMapper"><select id="pageUser" resultType="com.pimee.bootmybatisplus.model.User">select id, name, age, email from user<where><if test="name!=null and name!=''">name like #{name}</if></where></select>
</mapper>
########分隔符#########
@Mapper
public interface UserMapper extends BaseMapper<User> {/*** 分页列表* @return*/List<User> pageUser(Map<String, Object> params);
}

测试代码在这:https://gitee.com/pianjiao006/boot-spring/tree/master/boot-mybatis-plus

https://gitee.com/pianjiao006/boot-spring.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-Softmax回归+损失函数+图像分类数据集

目录 Softmax回归回归 VS 分类Kaggle上的分类问题 从回归到多类分类回归分类从回归到多类分类-均方损失从回归到多类分类-无校验比例从回归到多类分类-校验比例 Softmax和交叉熵损失总结损失函数均方损失绝对值损失函数鲁棒损失 图像分类数据集通过框架中内置函数将FashionMNIS…

RabbitMQ---交换机-Fanout-Direct

Publisher&#xff1a;生产者&#xff0c;不再发送消息到队列中&#xff0c;而是发给交换机Exchange&#xff1a;交换机&#xff0c;一方面&#xff0c;接收生产者发送的消息。另一方面&#xff0c;知道如何处理消息&#xff0c;例如递交给某个特别队列、递交给所有队列、或是将…

删除实例分割中的特定标签

用labelme软件对图像进行实例分割或语义分割标注后会得到json文件&#xff0c;如果想要删除某个特定标签&#xff0c;可以使用如下代码&#xff0c;完整代码下载地址&#xff1a;代码地址 import json import os# 要处理的json文件夹路径 folder_path H:/json # 需要删除的标…

如何一键生成多个文本二维码?excel表格批量生码的方法

现在很多人会将文本信息做成二维码来展示&#xff0c;当有同类型内容生成大量二维码时&#xff0c;可以使用将文本导入excel表格的方式&#xff0c;将表格中的每条数据批量生成二维码&#xff0c;可以有效提升二维码制作的速度和效率。下面就让小编来将具体的操作步骤分享给大家…

LangChain API 2.0

转载整理自&#xff1a;https://api.python.langchain.com/en/latest/langchain_api_reference.html 文章目录 1、langchain.agentsClassesFunctions 2、langchain.callbacksClasses 3、langchain.chainsClassesFunctions 4、langchain.embeddingsClasses 5、langchain.evaluat…

二叉树顺序结构及链式结构

一.二叉树的顺序结构 1.定义&#xff1a;使用数组存储数据&#xff0c;一般使用数组只适合表示完全二叉树&#xff0c;此时不会有空间的浪费 注&#xff1a;二叉树的顺序存储在逻辑上是一颗二叉树&#xff0c;但是在物理上是一个数组&#xff0c;此时需要程序员自己想清楚调整…

http流式返回

HTTP流式返回&#xff08;Stream&#xff09;是一种服务器向客户端传输数据的方式允许数据分块发送而不是一次性发送完毕。 这样客户端可以在接收到第一部分数据时就开始处理&#xff0c;而不必等待整个响应完成。 应用场景&#xff1a; 2.1 业务场景&#xff1a;图表的监听&a…

手动安装maven依赖到本地仓库

使用mvn install命令安装jar包到指定的仓库。 命令如下&#xff1a; mvn install:install-file -Dmaven.repo.localC:\Users\liyong.m2\repository -DgroupIdcom.aspose -DartifactIdwords -Dversion18.4 -Dpackagingjar -DfileC:\Users\liyong\Desktop\jar\words-18.4.jar 解释…

grafana + Prometheus + node-exporter + pushgateway + alertmanager的监控解决方案

业内比较著名的监控解决方案&#xff0c;据笔者所知&#xff0c;大概是三套&#xff1a; 一个是zabbix的解决方案&#xff0c;一个是prometheusgrafana&#xff0c;一个是ELK zabbix比较重&#xff0c;而且原生支持监控SNMP&#xff0c;自带一个仪表盘&#xff0c;不需要额外…

docker redis 持久化

1、拉取redis镜像 docker pull redis:latest 2、 mkdir /data/redis 3、填充redis.conf文件及根据需求修改相应的配置 •通过官网地址找到对应版本的配置文件 •将配置信息复制到redis.conf中 •常见的修改配置 https://redis.io/docs/latest/operate/oss_and_stack/managem…

高仿果汁导航模板

参考原文&#xff1a;果汁导航风格模板_1234FCOM专注游戏工具及源码例子分享 极速云

sdut pta 链表3(优化)-----7-3 sdut-C语言实验-链表的结点插入

7-3 sdut-C语言实验-链表的结点插入 分数 20 全屏浏览 切换布局 作者 马新娟 单位 山东理工大学 给出一个只有头指针的链表和 n 次操作&#xff0c;每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。 输入格式: 多组输入。…

基于springboot的毕业设计系统的开发源码

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的毕业设计系统的开发。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 毕业设计系统能够实现…

学习通高分免费刷课实操教程

文章目录 概要整体架构流程详细步骤云上全平台登录步骤小结 概要 我之前提到过一个通过浏览器的三个脚本就可以免费高分刷课的文章&#xff0c;由于不方便拍视频进行实操演示&#xff0c;然后写下了这个实操教程&#xff0c;之前的三个脚本划到文章末尾 整体架构流程 整体大…

窗口函数 | rows between …… and ……

ROWS BETWEEN ... AND ... 是 SQL 窗口函数中的一个子句&#xff0c;用于定义窗口函数操作的行范围。窗口函数允许用户对一组相关的记录执行计算&#xff0c;这些记录被称为窗口。 基本语法 <窗口函数> OVER ( [PARTITION BY <列名>] ORDER BY <列名> [AS…

前端基础入门三大核心之HTML篇 —— SVG的viewBox、width和height:绘制矢量图的魔法比例尺【含代码示例】

前端基础入门三大核心之HTML篇 —— SVG的viewBox、width和height&#xff1a;绘制矢量图的魔法比例尺【含代码示例】 基本概念与作用viewBoxwidth和height 代码示例与实践基础示例动态调整示例 不同角度的使用思路保持比例缩放自动适应容器 实际问题与解决方案结语与讨论 在前…

华为云之Zabbix监控平台部署实践

华为云之Zabbix监控平台部署实践 一、本次实践介绍1.1 实践环境简介1.3 本次实践完成目标 二、 相关服务介绍2.1 华为云ECS云服务器介绍2.2 Zabbix介绍 三、环境准备工作3.1 预置实验环境3.2 查看预置环境信息 四、登录华为云4.1 登录华为云4.2 查看ECS状态4.3 连接ECS弹性云服…

力扣HOT100 - 287. 寻找重复数

解题思路&#xff1a; 快慢指针 第一步&#xff0c;慢指针每次移动一步&#xff0c;快指针每次移动两步&#xff0c;直到它们相遇。这一步保证了它们在环中相遇。 接下来&#xff0c;将其中一个指针&#xff08;快指针或慢指针&#xff09;重置到起点&#xff08;即数组的第一…

SpringBoot实现邮箱验证码

自行创建一个SpringBoot项目 导入SpringBoot所需要的邮箱验证码的包 <!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…

前后端部署笔记

windows版&#xff1a; 如果傻呗公司让用win电脑部署&#xff0c;类似于我们使用笔记本做局域网服务器&#xff0c;社内使用。 1.安装win版的nginx、mysql、node、jdk等 2.nginx开机自启参考Nginx配置及开机自启动&#xff08;Windows环境&#xff09;_nginx开机自启动 wind…