springboot 分页

本文介绍了如何在Spring Boot项目中利用Mybatis Plus的分页拦截器实现数据分页,重点讲解了IPage的使用和LambdaQueryWrapper的灵活运用,以及错误处理和条件查询的最佳实践。

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

bookDao.selectPage(null,null);

进入selectPage 里面
在这里插入图片描述
第一个null 需要加入 Ipage类型的
在这里插入图片描述
进入IPage
ctrl + h 查看继承关系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加入参数
第一页显示五条数据

在这里插入图片描述

分页如果要使用 必须要使用mp 提供的拦截器

创建一个拦截器的类

package com.itheima.config;

import com.baomidou.mybatisplus.core.MybatisConfiguration;
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(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //  拦截器的壳 没有拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());// 添加內部分页拦截器
        
        return interceptor;
    }
}


在这里插入图片描述
在这里插入图片描述


  void testGetPage(){
        IPage iPage = new Page(2,5);
        bookDao.selectPage(iPage,null);
        System.out.println(iPage.getCurrent()); // 当前页
        System.out.println(iPage.getSize());// 一页显示多少数据
        System.out.println(iPage.getTotal());// 一共多少数据
        System.out.println(iPage.getPages());// 一共能分多少页
        System.out.println(iPage.getRecords());// 当前页的数据
    }
 @Test
    void testgetBy(){
        QueryWrapper<Book> queryWrapper = new QueryWrapper(); // 条件的壳
        queryWrapper.like("name","spring"); //查询 name 值中包含spring的数据
        bookDao.selectList(queryWrapper);
    }

在这里插入图片描述
该方法 如果name 属性值 写错 比如写成 anme 那么就会报错
在这里插入图片描述
可以改成LambdaQueryWrapper

   @Test
    void testgetBy2(){
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper(); // 条件的壳
        lqw.like(Book::getName,"spring");
        bookDao.selectList(lqw);
    }

如果查询结果是null 则 会将null 当成字符串查询

   String name = null;
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper(); // 条件的壳
        lqw.like(Book::getName,name);
        bookDao.selectList(lqw);

在这里插入图片描述
在这里插入图片描述
有一个condition 条件 如果是true 就连 如果是false 就不连后面的查询条件
在这里插入图片描述
在这里插入图片描述

SpringBoot中使用分页功能可以借助MyBatis-Plus、Spring Data JPA等框架来实现。以下是使用MyBatis-Plus实现分页的示例: 1. 引入MyBatis-Plus依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> ``` 2. 创建实体类和对应的Mapper接口: ```java public class User { private Long id; private String name; private Integer age; // getter和setter省略 } public interface UserMapper extends BaseMapper<User> {} ``` 3. 在Mapper接口中定义方法: ```java public interface UserMapper extends BaseMapper<User> { IPage<User> selectUserPage(Page<User> page, @Param("name") String name); } ``` 4. 在对应的XML文件中实现方法: ```xml <select id="selectUserPage" resultType="com.example.demo.entity.User"> select id, name, age from user <where> <if test="name != null"> and name like concat('%', #{name}, '%') </if> </where> </select> ``` 5. 在Service层中调用Mapper接口方法: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public IPage<User> selectUserPage(Page<User> page, String name) { return userMapper.selectUserPage(page, name); } } ``` 6. 在Controller层中调用Service层方法: ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users") public IPage<User> selectUserPage(Page<User> page, String name) { return userService.selectUserPage(page, name); } } ``` 这样就完成了使用MyBatis-Plus实现SpringBoot分页的示例。其中,`Page<User>`是MyBatis-Plus提供的分页查询参数封装类,`IPage<User>`是MyBatis-Plus提供的分页查询结果封装类。在Controller层中,通过接收`Page<User>`参数来传递分页查询的相关参数,同时也可以传递其他的查询参数,比如上述示例中的`name`参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值