首页 > 其他分享 >MybatisPlus使用分页功能

MybatisPlus使用分页功能

时间:2024-07-08 15:58:05浏览次数:15  
标签:xml 功能 MybatisPlus 分页 Page 查询 IPage page

MybatisPlus 使用分页功能

分页查询是一个很常见的需求,故Mybatis-Plus提供了一个分页插件,使用它可以十分方便的完成分页查询。下面介绍Mybatis-Plus分页插件的用法,详细信息可参考[官方文档](分页插件 | MyBatis-Plus (baomidou.com))

首先为分页编写一个配置类:

@Configuration
public class MPConfiguration {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

分页插件使用说明

  1. 构造分页对象

分页对象包含了分页的各项信息,其核心属性如下:

属性名 类型 默认值 描述
records List emptyList 查询数据列表
total Long 0 查询列表总记录数
size Long 10 每页显示条数,默认10
current Long 1 当前页

分页对象既作为分页查询的参数,也作为分页查询的返回结果,当作为查询参数时,通常只需提供currentsize属性,如下:

IPage<T> page = new Page<>(current, size);

注:IPage为分页接口,PageIPage接口的一个实现类。

  1. 分页查询

Mybatis Plus的BaseMapperServiceImpl均提供了常用的分页查询的方法,例如:

BaseMapper的分页查询:

IPage<T> selectPage(IPage<T> page,Wrapper<T> queryWrapper);

ServiceImpl的分页查询:

// 无条件分页查询
IPage<T> page(IPage<T> page);
// 条件分页查询
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);

自定义Mapper 查询:

对于自定义SQL,也可以十分方便的完成分页查询,如下:

Mapper接口:

IPage<UserVo> selectPageVo(IPage<?> page, Integer state);

Mapper.xml

<select id="selectPageVo" resultType="xxx.xxx.xxx.UserVo">
    SELECT id,name FROM user WHERE state=#{state}
</select>

注意:Mapper.xml中的SQL只需实现查询list的逻辑即可,无需关注分页的逻辑。

具体的实例见下面的测试类:

首先编写一段测试代码:

@SpringBootTest
public class PageTest {

    @Autowired
    private UserService userService;

    @Autowired
    private UserMapper userMapper;

    //通用Service分页查询
    @Test
    public void testPageService() {
        Page<User> page = new Page<>(2, 3);
        Page<User> userPage = userService.page(page);
        userPage.getRecords().forEach(System.out::println);
    }

    //通用Mapper分页查询
    @Test
    public void testPageMapper() {
        IPage<User> page = new Page<>(2, 3);
        IPage<User> userPage = userMapper.selectPage(page, null);
        userPage.getRecords().forEach(System.out::println);
    }

    //自定义SQL分页查询
    @Test
    public void testCustomMapper() {
        IPage<User> page = new Page<>(2, 3);
        IPage<User> userPage = userMapper.selectUserPage(page);
        userPage.getRecords().forEach(System.out::println);
    }
}

对于自定义分页查询,在UserMapper中声明分页查询方法如下:

IPage<User> selectUserPage(IPage<User> page);

创建resources/mapper/UserMapper.xml文件,内容如下:

<?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.atguigu.hellomp.mapper.UserMapper">
    <select id="selectUserPage" resultType="com.atguigu.hellomp.entity.User">
        select *
        from user
    </select>
</mapper>

注意:Mybatis-Plus中Mapper.xml文件路径默认为:classpath*:/mapper/**/*.xml,可在application.yml中配置以下参数进行修改:

mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml

标签:xml,功能,MybatisPlus,分页,Page,查询,IPage,page
From: https://www.cnblogs.com/lilyflower/p/18290071

相关文章

  • MybatisPlus配置逻辑删除
    MybatisPlus配置逻辑删除逻辑删除,可以方便地实现对数据库记录的逻辑删除而不是物理删除。逻辑删除是指通过更改记录的状态或添加标记字段来模拟删除操作,从而保留了删除前的数据,便于后续的数据分析和恢复。物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数......
  • 使用Canvas封装图片压缩功能
    最近在学习和工作中遇到这样一个场景:如何将前端上传的图片进行压缩传递给服务端?因为此前从未了解过图片压缩的功能,所以也是带着好奇进行了一番学习,那么我的解决思路如下展示整体思路创建input框实现图片上传将上传的文件转成base64格式前端通过base64进行原始图片展示,并将此......
  • STM32标准库函数功能简介————GPIO篇
    1.void GPIO_DeInit (GPIO_TypeDef*GPIOx);函数解释:将指定的GPIO端口恢复到默认设置。2.voidGPIO_AFIODeInit(void);函数解释:将外设映射设置恢复为默认状态,以重新初始化外设映射配置。3.voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);函数......
  • 【软件工程造价师必修课:概念篇】4.ILF/EIF/EI/EO/EQ/BFC五大功能点说的明明白白!附案例
       软件成本评估工作,本身有一定的专业性,也是有一定的门槛,最主要的难点在功能点识别方面。  下面我们就针对评估过程中需要掌握的功能点知识,分享给大家,大家先了解概念,继而通过我们的案例来让概念更具体化,从而达到初步了解并掌握。BFC 基本功能组件BasicFunction......
  • 给你的博客加上搜索功能!
    15.搜索功能搜索功能是非常重要的,但VuePress内置的搜索功能,只是基于headers的搜索——它会自动为所有页面的标题、h2​和h3​构建起一个简单的搜索索引,也就是我们能搜索的东西只有标题,如果标题里没有你输入的关键字,就搜不到。也就是说,不能搜索Markdown文件里的内容,非......
  • 不单独部署注册中心,又要具备注册中心的功能,我能上天!
    开心一刻昨天看到一条广告:全国比丑大赛,一等奖2万奖金我高高兴兴骑着自行车去了场地,结果被保安拦着不让进我心里窃喜:莫非我长得不丑,不符合参赛条件?我说道:为什么不让我进保安:这是业余人员间的比赛,职业选手不能参加敢情不是不丑,而是太丑!书接上回上篇不单独部署注册中心,又......
  • Simple WPF: WPF 实现按钮的长按,短按功能
    最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。实现了一个支持长短按得按钮组件,单击可以触发Click事件,长按可以触发LongPressed事件,长按松开时触发LongClick事件。源码请自取:Github长按阈值属性的建立为了方便在xaml中使用,我们先配置一个DependencyProperty......
  • 前端JS特效第20集:HTML5图片瀑布流带筛选功能代码
    HTML5图片瀑布流带筛选功能代码,先来看看效果:部分核心的代码如下(全部代码在文章末尾):<!DOCTYPEhtml><htmllang="en"class="no-js"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,init......
  • 装饰器中闭包之加认证功能
    类似京东商城,其实就是前端页面加后端功能的集合,所谓的后端功能其实就是各种函数。这里所谓的认证,就是对于用户名和密码的一个校验。废话不多说,直接上需求,我们写代码搞一下。需求:写一段程序模拟京东商城,用装饰器来实现认证功能。代码如下:name_list=[{'name':'alex','pwd':'......
  • MybatisPlus实现插入/修改数据自动设置时间
    引言插入数据时自动设置当前时间,更新数据时自动修改日期为修改时的日期。使用MybatisPlus的扩展接口MetaObjectHandler步骤实现接口实体类加注解实现接口packagecom.example.vueelementson.common;importcom.baomidou.mybatisplus.core.handlers.MetaObjectHa......