mybatis-plus分页查询(springboot中实现单表和多表查询)

一、mybatis-plus单表查询

使用mybatis-plus实现单表分页查询 非常方便,主要操作步骤如下:

  1. 配置分页查询拦截器
  2. 进行分页查询

1.首先,打开mybatis-plus官网的插件(插件主体)
或者点击mybatis-plus插件
在这里插入图片描述

我是配置在springboot项目中,所以找到springboot的分页配置

在这里插入图片描述

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

2.配置分页查询拦截器

  • 分页查询拦截器装载到springboot容器中

在项目中新建config目录,该配置目录下新建 分页配置类PageConfig
在这里插入图片描述

package com.sangeng.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
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 //定义配置类,类内部包含 被@Bean注解的方法,被相关类扫描,并用于构建bean定义,初始化Spring容器。
public class PageConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }
}

3.测试类中测试分页

  • 分页对象page,设置相关的分页信息 (最终也可以从分页对象中获取分页信息)
  • 调用分页方法
    @Test
    public void testPage(){
        //查询第一页,每页显示2条记录
        IPage<User> page = new Page<>(); //page 分页对象,设置相关的分页信息
        //设置每页条数 即pageSize
        page.setSize(2);
        //设置查询第几页 即pageNum
        page.setCurrent(1);
        userMapper.selectPage(page, null);// queryWrapper设置查询条件null

        // 查询后的结果 会 返回到page中
        System.out.println(page.getRecords()); //当前页面的 数据
        System.out.println(page.getTotal());   //获取总记录数(数据库目前一共5条记录)
        System.out.println(page.getCurrent()); //获取当前页码 (第1页)
    }

debug调试说明
在这里插入图片描述
:分页后的内容,以及相关参数(当前页码,每页条数,总记录数)都可以从分页对象page中拿到,方便后面使用。

二、mybatis-plus多表查询

2.1多表查询SQL语句

在xml中不需要关心分页操作,mybatis-plus会帮我们完成

查orders表所有属性 + user表的一个属性user_name

SELECT 
	o.*,u.`user_name`
FROM 
	USER u,orders o
WHERE 
	o.`user_id` = u.`id`

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.2 定义一个实体类Orders
属性包含orders表所有属性 + user表的一个属性user_name
在这里插入图片描述
2.3定义OrdersMapper接口,xml写SQL语句
mapper接口中的方法的 第一个参数定义成Page类型
在这里插入图片描述

package com.sangeng.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sangeng.domain.Orders;

public interface OrdersMapper extends BaseMapper<Orders> {
   //要实现自定义分页,修改 返回类型IPage<?> + 参数类型 Page<?>    ?改成实体类Orders
   IPage<Orders> findAllOrders(Page<Orders> page);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sangeng.mapper.OrdersMapper">

<!--    在xml中不需要关心分页操作,mybatis-plus会帮我们完成-->
    <select id="findAllOrders" resultType="com.sangeng.domain.Orders">
        SELECT
            o.*, u.user_name
        FROM `user` u, orders o
        WHERE o.id = u.id
    </select>

</mapper>

2.4调用方法测试
在这里插入图片描述

 	@Autowired
    private OrdersMapper ordersMapper;
    @Test
    public void testOrdersPage(){
        Page<Orders> page = new Page<>();
        //设置每页大小
        page.setSize(2);
        //设置当前页码
        page.setCurrent(2);
        ordersMapper.findAllOrders(page);
        System.out.println(page.getRecords());
        System.out.println(page.getTotal());
    }
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于您的问题,我可以帮您解答。针对springboot整合mybatis-plus实现多表分页查询实现,可以按照以下步骤进行: 1.在pom.xml文件添加Mybatis-Plus和Pagehelper的依赖,如下: ``` <!-- Mybatis-Plus依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> <!-- Pagehelper依赖 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency> ``` 2.在Mybatis-Plus的配置文件,指定分页插件。如下: ``` @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } } ``` 3.编写Mapper和对应的Mapper.xml文件,进行多表联合查询,并在Mapper接口方法上添加分页参数。如下: ``` //在Mapper接口方法上添加分页参数 public interface UserMapper extends BaseMapper<User> { List<User> selectUserPage(Page<User> page); } <!-- 在Mapper.xml编写多表联合查询SQL语句 --> <select id="selectUserPage" resultMap="BaseResultMap"> select u.*, r.role_name from user u left join user_role ur on u.id = ur.user_id left join role r on ur.role_id = r.id <where> <if test="username != null and username != ''"> and u.username like concat('%',#{username},'%') </if> </where> </select> ``` 4.在Controller层,接受分页参数并返回分页结果。如下: ``` @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users") public Page<User> selectUserPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, String username) { Page<User> p = new Page<>(page, size); p = userMapper.selectUserPage(p, username); return p; } } ``` 以上就是整合Mybatis-Plus和Pagehelper实现多表分页查询的具体步骤,希望能对您有所帮助!如果您有其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值