Mybatis-plus使用pagehelper进行分页

2023-05-16

在这里插入图片描述

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id   bigint(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    PRIMARY KEY (id)
);

DELETE
FROM user;

INSERT INTO user (id, name)
VALUES (1, 'Jone'),
       (2, 'Jack'),
       (3, 'Tom'),
       (4, 'Sandy'),
       (5, 'Billie');
package com.zs.testmybatisplus;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.github.pagehelper.PageInterceptor;

/**
 * 两个分页插件都配置,不会冲突
 *
 * @author miemie
 * @date 2020/5/29
 */
@Configuration
public class MybatisPlusPageConfig {

    /**
     * pagehelper的分页插件
     */
    @Bean
    public PageInterceptor pageInterceptor() {
        return new PageInterceptor();
    }

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

//    @Bean
//    public ConfigurationCustomizer configurationCustomizer() {
//        return configuration -> configuration.setUseDeprecatedExecutor(false);
//    }
}

1实体类

package com.zs.testmybatisplus;

import lombok.Data;

/**
 * @author miemie
 * @since 2020-05-29
 */
@Data
public class User {

    private Long id;

    private String name;
}

2测试类

package com.zs.testmybatisplus;

import static org.assertj.core.api.Assertions.assertThat;

import java.util.Arrays;
import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

/**
 * @author miemie
 * @since 2020-05-29
 */
@SpringBootTest
class DefaultTest {

    @Autowired
    private UserMapper mapper;

    @Test
    void test() {
        /**
         * ==>  Preparing: SELECT COUNT(*) FROM user WHERE (id = ?)
         * ==> Parameters: 1(Integer)
         * <==    Columns: COUNT(*)
         * <==        Row: 1
         * <==      Total: 1
         * ==>  Preparing: SELECT id,name FROM user WHERE (id = ?) LIMIT ?
         * ==> Parameters: 1(Integer), 2(Long)
         * <==    Columns: id, name
         * <==        Row: 1, Jone
         * <==      Total: 1
         */
        Page<User> mpPage = mapper.selectPage(new Page<>(1, 2), Wrappers.<User>query()
                .eq("id", 1));
        assertThat(mpPage.getTotal()).isEqualTo(1L);
        List<User> records = mpPage.getRecords();
        assertThat(records).isNotEmpty();
        assertThat(records.size()).isEqualTo(1);

        // pagehelper
        /**
         * ==>  Preparing: SELECT count(0) FROM user WHERE id = ?
         * ==> Parameters: 1(Integer)
         * <==    Columns: count(0)
         * <==        Row: 1
         * <==      Total: 1
         * ==>  Preparing: SELECT id,name FROM user WHERE id=? LIMIT ?
         * ==> Parameters: 1(Integer), 2(Integer)
         * <==    Columns: id, name
         * <==        Row: 1, Jone
         * <==      Total: 1
         */
        PageInfo<User> info = PageHelper.startPage(1, 2)
                .doSelectPageInfo(
                        () -> mapper.selectById(1));

        assertThat(info.getTotal()).isEqualTo(1L);
        List<User> list = info.getList();
        assertThat(list).isNotEmpty();
        assertThat(list.size()).isEqualTo(1);
    }

    @Test
    void testIn() {
        /**
         * ==>  Preparing: SELECT COUNT(*) FROM user WHERE (id IN (?, ?))
         * ==> Parameters: 1(Long), 2(Long)
         * <==    Columns: COUNT(*)
         * <==        Row: 2
         * <==      Total: 1
         * ==>  Preparing: SELECT id,name FROM user WHERE (id IN (?,?)) LIMIT ?
         * ==> Parameters: 1(Long), 2(Long), 5(Long)
         * <==    Columns: id, name
         * <==        Row: 1, Jone
         * <==        Row: 2, Jack
         * <==      Total: 2
         */
        List<Long> ids = Arrays.asList(1L, 2L);
        Page<User> mpPage = mapper.selectPage(new Page<>(1, 5), Wrappers.<User>query()
                .in("id", ids));
        assertThat(mpPage.getTotal()).isEqualTo(2L);
        List<User> records = mpPage.getRecords();
        assertThat(records).isNotEmpty();
        assertThat(records.size()).isEqualTo(2);

        // pagehelper
        /**
         * ==>  Preparing: SELECT count(0) FROM user WHERE (id IN (?, ?))
         * ==> Parameters: 1(Long), 2(Long)
         * <==    Columns: count(0)
         * <==        Row: 2
         * <==      Total: 1
         * ==>  Preparing: SELECT id,name FROM user WHERE (id IN (?,?)) LIMIT ?
         * ==> Parameters: 1(Long), 2(Long), 5(Integer)
         * <==    Columns: id, name
         * <==        Row: 1, Jone
         * <==        Row: 2, Jack
         * <==      Total: 2
         */
        PageInfo<User> info = PageHelper.startPage(1, 5)
                .doSelectPageInfo(
                        () -> mapper.selectList(Wrappers.<User>query()
                                .in("id", ids)));
        assertThat(info.getTotal()).isEqualTo(2L);
        List<User> list = info.getList();
        assertThat(list).isNotEmpty();
        assertThat(list.size()).isEqualTo(2);
    }
}

3mapper

package com.zs.testmybatisplus;

import org.apache.ibatis.annotations.Mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;


/**
 * @author miemie
 * @since 2020-05-29
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis-plus使用pagehelper进行分页 的相关文章

随机推荐

  • 人工智能轨道交通行业周刊-第43期(2023.4.24-5.7)

    本期关键词 xff1a 综合智能检测 隧道检测 智慧城轨白皮书 虚拟编组 讯飞星火大模型 央企数字化 1 整理涉及公众号名单 1 1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS Wor
  • kolla搭建octavia

    本文是在另外一篇文章的基础上使用kolla ansible 部署octavia实践总结 部分内容总结略有粗糙 xff0c 见谅 使用kolla ansible all in one部署OpenStack Stein https blog c
  • 关闭win10自动更新——组策略

    1 为什么要关闭自动更新 我一向是推荐关闭自动更新 xff0c 然后有时间的时候自己主动去更新 xff0c 因为win10更新还是修复了一些bug的 xff0c 但是自动更新会闹出很多问题 xff0c 例如紧急开会的时候发现电脑在自动更新
  • python 中位于运算符 & 应用

    amp 运算符在计算机中是二进制运算符 xff0c 常使用 amp 61 xff0c 即先进性位于运算符 xff0c 在进行赋值 xff0c 例如 a amp 61 b 等价于 a 61 a amp b 位于运算只二进制 保同除异 a 61
  • 【FreeRDP 】

    Ubuntu18 04安装FreeRDP 远程连接Windows桌面 1 FreeRDP2 环境3 Ubuntu安装xfreerdp4 连接准备5 连接6 问题总结 1 FreeRDP FreeRDP lt 61 61 gt Remote
  • 7-1 编写程序,输入年、月、日,计算该 日是该年的第几天。要求:计算日期、判断闰年均使用自定义函数实现。

    7 1 编写程序 xff0c 输入年 月 日 xff0c 计算该 日是该年的第几天 要求 xff1a 计算日期 判断闰年均使用自定义函数实现 编写程序 xff0c 输入年 月 日 xff0c 计算该 日是该年的第几天 要求 xff1a 计算
  • ifort + mkl + impi (全套intel)编译安装量子化学软件GAMESS 2022 R1版本

    说明 xff1a linux下编译软件都需要先配置好该软件依赖的系统环境 系统环境可以通过软件的安装说明了解 xff0c 例如 xff1a readme md等文件或网页 这个前提条件很重要 xff01 后面正式编译出错基本都可以归结到系统
  • Linux C 编程技巧--利用有限状态机模型编程

    我们知道 xff0c 一般编写程序时都要画出流程图 xff0c 按照流程图结构来编程 xff0c 如果编写一个比较繁琐 xff0c 容易思维混乱的程序时 xff0c 我们可以利用有限状态机模型画出一个状态转移图 xff0c 这样便可以利用画
  • spring读取properties文件属性,文件属性与系统属性冲突

    1 问题概述 spring在读取properties文件属性时 xff0c 当文件属性与系统属性冲突时 xff0c 会读取到系统属性值 2 问题复现 2 1 读取properties文件 创建maven工程在pom xml文件中添加spri
  • C语言实现16进制数与10进制数的转化

    C语言实现16进制数与10进制数的转化 这里有两种情况 xff1a 第一种情况 xff1a 如果我得到的是一个16进制数 xff0c 我通过肉眼看到的就是16进制显示 xff08 这里看到的肯定打印结果 xff09 xff0c 比如85 x
  • MyBatisMapper代理开发中,如何将Mapper接口和sql映射文件放置在同一目录下

    1 前言 1 1 环境准备 创建一个maven工程并导入mybatis坐标及mysql驱动坐标在java目录下创建Mapper接口在resouces目录下创建配置文件和sql映射文件 1 2 正常思维 如何将Mapper接口和sql映射文件
  • MyBatis Mapper代理开发

    文章目录 1 数据库准备2 创建一个maven项目 xff0c 导入mysql驱动坐标和mybatis坐标3 在resources目录下创建配置文件4 在resources目录下创建sql映射文件5 定义mapper接口6 修改配置文件中s
  • spring开启事务

    文章目录 1 概述2 环境准备2 1 spring整合mybatis2 2 添加dao service 在service方法中调用dao方法实现转账效果 2 3 数据库准备 3 不开启事务实现转账3 1 创建测试类 Demo 3 2 运行结
  • spring事务管理原理

    1 环境准备 spring如何开启事务 2 原理 在上面链接文章中吗 xff0c 我们通过A向B转账500在不开启事务情况下 xff0c reduceMoney方法和addMoney分别开启2个不同的事务 xff0c 因此在发生异常后会出现
  • spring事务相关配置之propagation

    文章目录 1 概述2 环境准备2 1 spring整合mybatis2 2 数据库准备2 2 1 account表2 2 2 log表 2 3 创建dao service并开启spring事务2 3 1 AccountDao2 3 2 Lo
  • spring事务相关配置之rollback

    文章目录 1 概述2 环境准备3 使用 96 rollbackFor 96 1 概述 我们知道当开启spring事务后 xff0c 如果出现异常 xff0c 那么数据库数据会进行回滚 但是并不是所有异常都会回滚因此我们可以使用rollbac
  • ios 音频录音、上传至7牛、播放及其与android兼容的问题

    iOS录音使用AVAudioRecorder xff0c 播放用 AVPlayer 就可以很好的解决 xff0c 网上也有很多的教程 这里就不细讲 xff0c 后面会附上代码 先说一下demo内容 xff0c 现在项目要求做一个录音 上传
  • 数据库

    1 查询选修1号课程的学生学号和成绩 xff0c 并要求对查询结果按成绩的降序排列 xff0c 如果成绩相同则按学号的升序排列 Select sno grade From sc Where cno 61 1 Order by grade D
  • linux内存测试工具memtester使用详解

    memtester官网 xff1a http pyropus ca software memtester linux安装 xff1a 下载安装包 1 wget http pyropus ca software memtester old v
  • Mybatis-plus使用pagehelper进行分页

    DROP TABLE IF span class token class name EXISTS span user span class token punctuation span CREATE span class token cla