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

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、最终目录结构

项目结构

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
配置多数据源: 1. 在pom.xml添加mybatis-plus和druid依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ``` 2. 在application.yml添加数据源配置: ```yaml spring: datasource: druid: one: url: jdbc:mysql://localhost:3306/one?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver two: url: jdbc:mysql://localhost:3306/two?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #默认数据源 primary: one ``` 3. 在代码使用@DS注解切换数据源: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @DS("one") @Override public User getUserById(Long id) { return userMapper.selectById(id); } @DS("two") @Override public User getUserByName(String name) { return userMapper.selectOne(new QueryWrapper<User>().eq("name", name)); } } ``` 配置分页插件: 1. 在pom.xml添加分页插件依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> ``` 2. 在配置类配置分页插件: ```java @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); return paginationInterceptor; } } ``` 3. 在controller层使用分页: ```java @GetMapping("/users") public IPage<User> getUsers(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { Page<User> page = new Page<>(pageNum, pageSize); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status", 1); return userService.page(page, queryWrapper); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值