解决MyBatis Plus分页不起作用

一、问题描述

使用的MyBatis Plus中的selectPage方法,无论怎么改都不起作用

原代码(serviceimpl层代码):

/**
 * 带条件的分页查询
 * @param current
 * @param limit
 * @param teacherQuery
 * @return
 */
@Override
public Page<EduTeacher> pageListTeacherCondition(long current, Long limit, TeacherQuery teacherQuery){
 
    //创建Page对象
    Page<EduTeacher> eduTeacherPage = new Page<>(current,limit);
 
    //构建条件
    QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
 
    //获取传入讲师的条件是否为空
    //讲师名
    String name = teacherQuery.getName();
    //讲师级别
    Integer level = teacherQuery.getLevel();
    //开始时间
    String gmtCreate = teacherQuery.getGmtCreate();
    //结束时间
    String gmtModified = teacherQuery.getGmtModified();
 
    //多条件组合查询
    //判断条件值是否为空,如果不为空拼接条件
    if (!StringUtils.isEmpty(name)){
        //构建条件 模糊查询
        wrapper.like("name",name);
    }
 
    if (!StringUtils.isEmpty(level)){
        //等于
        wrapper.eq("level",level);
    }
 
    if (!StringUtils.isEmpty(gmtCreate)){
        //大于等于
        wrapper.ge("gmt_create",gmtCreate);
    }
 
    if (!StringUtils.isEmpty(gmtModified)){
        //小于等于
        wrapper.le("gmt_modified",gmtModified);
    }
 
    //调用mybatis plus分页方法进行查询
    eduTeacherMapper.selectPage(eduTeacherPage,wrapper);

    
    return eduTeacherPage;

二、解决方案

我查了一天后来才知道问题出在哪里,没有进行配置分页插件,加上这个分页插件配置类,查询分页就好使了

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class MyBatisPlusConfig {
 
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor page = new PaginationInterceptor();
        page.setDialectType("mysql");
        return page;
    }
}

三、显示效果

访问方式GET :http://localhost:9030/eduservice/teacher/pageListTeacherCondition/1/5?current=1&limit=5&gmtCreate=2019-01-01 10:10:10&gmtModified=2020-02-01 10:10:10&level=1&name=宋

MyBatis Plus实现带条件分页查询响应结果.png

在使用 MyBatis-Plus 进行分页查询时,传入了 pageNum 和 pageSize,但是查询结果没有按照预期的效果返回。这个问题的原因可能是缺少分页插件的配置。可以在项目工程中创建 config 目录,在其中新建配置类 MyBatisPlusConfig.java,然后添加分页插件的配置。具体的配置代码如下所示: ```java import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisPlusConfig { /** * 插件配置 * * @return */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言) interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL)); // interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 添加乐观锁拦截器 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } } ``` 其中,需要注意的是,需要根据实际使用的数据库类型来设置分页方言,这里以 PostgreSQL 数据库为例,设置了 DbType.POSTGRE_SQL。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值