• 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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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页)
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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`
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    <?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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    python基础语法(JSON、类、对象)
    PD仿真算法中变形梯度矩阵的极分解
    Scala的字符串插值
    [附源码]计算机毕业设计springboot创新创业管理系统
    Flutter 教程之高效且精美的滚动组件Slivers (教程含源码)
    javaScript:键盘事件和表单事件以及鼠标键盘结合事件
    安装PostgreSql 9.6版本报错
    如何在Windows电脑上同时运行多个程序?
    如何通过快鲸scrm解决线索管理难、线索浪费严重等问题
    数据结构小记【Python/C++版】——树与二叉树篇
  • 原文地址:https://blog.csdn.net/qq_45432276/article/details/131143009