java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot数据库分页

SpringBoot集成MyBatis-Plus实现数据库分页功能

作者:huaweichenai

这篇文章主要为大家详细介绍了SpringBoot如何集成MyBatis-Plus实现数据库分页功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、依赖引入

需要的依赖参考:SpringBoot使用MyBatis-Plus依赖实现数据库操作的实战教学

如果你使用的是spring boot4的话需要额外增加一个依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-jsqlparser</artifactId>
    <version>3.5.17</version>
</dependency>

二、配置分页拦截器

package com.example.demo.config;
import com.baomidou.mybatisplus.annotation.DbType;
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 MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

三、分页实现流程

1. 创建分页对象

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

// 分页对象 pageNum页码,pageSize每页条数
Page&lt;User&gt; page = new Page&lt;&gt;(1, 10);

2. 增加条件构造器(可选)

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

//条件构造器
QueryWrapper&lt;User&gt; wrapper = new QueryWrapper&lt;&gt;();

//查询条件
wrapper.eq("name", "张三");         // name = '张三'
wrapper.like("phone", "138");       // phone like '%138%'
wrapper.ge("age", 18);              // age &gt;= 18
wrapper.le("age", 60);              // age &lt;= 60
wrapper.eq("status", 1);            // status=1

如果想要使用实体属性代替筛选条件,可以使用LambdaQueryWrapper来实现

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;


//条件构造器
LambdaQueryWrapper&lt;User&gt; wrapper = new LambdaQueryWrapper&lt;&gt;();

wrapper.eq(User::getName, "张三")
       .like(User::getPhone,"138")
       .ge(User::getAge,18);

3. 执行分页查询

import com.baomidou.mybatisplus.core.metadata.IPage;


//执行分页查询
IPage&lt;User&gt; result = userMapper.selectPage(page, null);

//带条件的分页查询
IPage&lt;User&gt; result = userMapper.selectPage(page, wrapper);

4. 获取数据

//获取数据列表
List&lt;User&gt; list = result.getRecords();

//获取总条数
Long total = result.getTotal();

四、分页实现示例

package com.example.demo.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.*;

@RestController
@RequestMapping("/user")
public class UserController {

    //注入mapper
    @Resource
    private UserMapper userMapper;


    @PostMapping("/page")
    public Map&lt;String, Object&gt; page(
            @RequestParam(required = false, defaultValue = "1") long pageNum,
            @RequestParam(required = false, defaultValue = "10") long pageSize,
            @RequestParam(required = false) String username
    ) {
        // 分页对象
        Page&lt;User&gt; page = new Page&lt;&gt;(pageNum, pageSize);

        //条件构造器
        LambdaQueryWrapper&lt;User&gt; queryWrapper = new LambdaQueryWrapper&lt;&gt;();

        if (username != null) {
            queryWrapper.like(User::getUsername, username);
        }

        queryWrapper.orderByAsc(User::getId);

        //执行分页查询
        IPage&lt;User&gt; result = userMapper.selectPage(page, queryWrapper);

        //获取数据列表
        List&lt;User&gt; list = result.getRecords();

        //获取总条数
        Long total = result.getTotal();

        Map&lt;String, Object&gt; data = new HashMap&lt;&gt;();
        data.put("list", list);
        data.put("total", total);
        return data;
    }
}

效果如下

到此这篇关于SpringBoot集成MyBatis-Plus实现数据库分页功能的文章就介绍到这了,更多相关SpringBoot数据库分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文