【springboot+mybatis-plus】使用IPage进行分页查询,返回全部数据

本文介绍了在SpringBoot项目中使用MybatisPlus进行分页查询时遇到的问题,即分页查询返回全部数据。问题源于缺少了MPConfig配置,未添加分页拦截器。解决方案是在项目中创建MPConfig配置类,注入并添加MybatisPlusInterceptor,特别是PaginationInnerInterceptor,以实现分页功能。最终成功实现了分页查询,并展示了项目的目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DeBug

一、出现情况

SpringBoot.在使用nyBatis plus时候做一个分页查询,使用getPage奈何返回全部数据。
分页查询结果-错误

二、项目架构

2-1、Dao层

package com.cloudguest.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloudguest.domain.TrainSchedule;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface TrainScheduleDao extends BaseMapper<TrainSchedule> {

}

2-2、service层

2-2-1、service接口
package com.cloudguest.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloudguest.domain.TrainSchedule;

import java.util.HashMap;
import java.util.List;

public interface TrainScheduleService extends IService<TrainSchedule> {
    IPage<TrainSchedule> getPage(Integer pageNumber, Integer pageSize);

    List<TrainSchedule> slectByMap(HashMap<String, Object> map);
}

2-2-2、serviceImpl 实现类
package com.cloudguest.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 列车查询类
 * 可以根据始发站和终点站查询到合适的列车
 * 之后返回到前端
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainSchedule {
    private String train_number;  // 车次
    private String departure_station;  // 出发站
    private String end_station;  // 到达站
    private String departure_time;  // 出发时间
    private String arrival_time;  // 到达时间

    private String business_seat; // 特等座

    private String soft_bed_first_class_bed;// 一等座/软卧

}

2-2-3、controller控制层

package com.cloudguest.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cloudguest.domain.TrainSchedule;
import com.cloudguest.service.TrainScheduleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/schedule")
public class TrainScheduleController {
    @Autowired
    private TrainScheduleService trainScheduleService;

    @GetMapping("{pageNumber}/{pageSize}")
    public IPage<TrainSchedule> findPage(@PathVariable Integer pageNumber, @PathVariable Integer pageSize) {
        return trainScheduleService.getPage(pageNumber, pageSize);
    }
}


三、原因及解决方法

3-1、原因

  • 没有添加config层的MPConfig配置信息,拦截器

3-2 解决方法

package com.cloudguest.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MPconfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        // 1、定义MP拦截器
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 2、添加具体的拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

3-3、最终查询结果

查询结果

3-4、最终目录结构

项目结构

### Spring BootMyBatis-Plus整合达梦数据库实现分页功能 #### 配置文件设置 对于`application.yml`中的配置,需指定达梦数据库的数据源URL、用户名以及密码。由于不同版本的Spring Boot可能存在差异,在此提供适用于大多数情况下的基本配置[^2]: ```yaml spring: datasource: url: jdbc:dmsql://localhost:5236/dameng_database_name?useSSL=false&serverTimezone=UTC username: your_username password: your_password driver-class-name: dm.jdbc.driver.DmDriver ``` 注意替换上述代码片段中的`dameng_database_name`, `your_username`, 和`your_password`为实际使用的值。 #### 添加依赖项 确保项目的`pom.xml`中包含了必要的Maven依赖来支持MyBatis-Plus和达梦驱动程序。通常情况下,这会涉及到如下几个库[^4]: ```xml <dependencies> <!-- MyBatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis.plus.version}</version> </dependency> <!-- 达梦 JDBC Driver --> <dependency> <groupId>dmjdbc</groupId> <artifactId>dmdriver</artifactId> <scope>runtime</scope> <version>${dmdriver.version}</version> </dependency> </dependencies> ``` 这里同样需要注意将`${mybatis.plus.version}`和`${dmdriver.version}`替换成具体的版本号。 #### 实现分页查询 要利用MyBatis-Plus提供的内置分页插件,可以在应用程序入口类上注册该插件实例。通过这种方式,所有的Mapper接口都将继承这一特性而无需额外编码工作[^1]: ```java import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.springframework.context.annotation.Bean; @SpringBootApplication public class Application { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } } ``` 当执行带有Page对象作为参数的方法调用时,MyBatis-Plus将会自动生成并执行相应的SQL语句以返回分页后的结果集[^3]。 例如,假设有一个名为User的实体及其对应的Mapper接口,则可以通过下面的方式来进行分页检索操作: ```java // 假设这是UserService里的方法 public IPage<User> getUsersByPage(int currentPage, int pageSize) { Page<User> page = new Page<>(currentPage, pageSize); userMapper.selectPage(page, null); // 这里第二个参数可以传入Wrapper条件构建器 return page; } ``` 以上就是关于如何在Spring Boot环境中集成MyBatis-Plus并与达梦数据库协作完成分页查询的一个简单介绍。希望这些信息能够帮助到正在寻找此类解决方案的人士。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值