我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mybatis-plus多表分页查询最佳实现(简单)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mybatis-plus多表分页查询最佳实现(简单)

1.简介

在Mybatis Plus 中,虽然IService 接口帮我们定义了很多常用的方法,但这些都是 T 对象有用,如果涉及到 多表的查询,还是需要自定义Vo 对象和自己编写sql 语句,Mybatis Plus提供了一个Page 对象,查询是需要设置其中的 size 字段 和 current 字段的值。

mybatis-plus的单表分页就不必多说了,那多表联查的分页该如何实现呢?其实也很简单,你只需要自己写好关联查询的sql再结合mybatis-plus提供的分页对象,就可以实现了。但是如何才能优雅的将分页参数和查询条件提供给mybatis-plus呢?我选择使用
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;这个对象来实现。直接继承baomidou提供的类可以省去每次手动再new对象,因为在获取参数时就已经自动构建了

2.实现

2.1版本

    3.5.1    8.0.18
                                    <dependency>                <groupId>com.baomidougroupId>                <artifactId>mybatis-plus-boot-starterartifactId>                <version>${mybatis-plus.version}version>            dependency>                        <dependency>                <groupId>com.baomidougroupId>                <artifactId>mybatis-plus-generatorartifactId>                <version>${mybatis-plus.version}version>            dependency>                                    <dependency>                <groupId>mysqlgroupId>                <artifactId>mysql-connector-javaartifactId>                <version>${connector.version}version>            dependency>

2.2分页插件

@MapperScan(“。。。”)这些基本配置我就不多说了

@Configurationpublic class MPConfig {        @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();        //乐观锁        //interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());        //分页锁        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));        return interceptor;    }}

2.3 分页参数 继承 自 Page

直接继承baomidou提供的类可以省去每次手动再new对象,因为在获取参数时就已经自动构建了

package com.dxf.common.utils;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import io.swagger.annotations.ApiModelProperty;import io.swagger.annotations.ApiParam;import springfox.documentation.annotations.ApiIgnore;import java.util.List;public class PageParam<T> extends Page<T> {        @ApiParam(hidden = true)    private List<T> records;        @ApiParam(hidden = true)    private long total = 0;        @ApiParam(value = "每页大小,默认10",required = false, defaultValue = "10")    private long size = 10;        @ApiParam(value = "当前页,默认1",required = false,defaultValue = "1")    private long current = 1;        @ApiParam(hidden = true)    private boolean isSearchCount = true;    @Override    @ApiParam(hidden = true)    public List<T> getRecords() {        return this.records;    }    @Override    public Page<T> setRecords(List<T> records) {        this.records = records;        return this;    }    @Override    public long getTotal() {        return this.total;    }    @Override    public Page<T> setTotal(long total) {        this.total = total;        return this;    }    @ApiParam(hidden = true)    public boolean getSearchCount() {        if (total < 0) {            return false;        }        return isSearchCount;    }    @Override    @ApiParam(hidden = true)    public boolean isSearchCount() {        if (total < 0) {            return false;        }        return isSearchCount;    }    @Override    public Page<T> setSearchCount(boolean isSearchCount) {        this.isSearchCount = isSearchCount;        return this;    }    @Override    public long getSize() {        return this.size;    }    @Override    public Page<T> setSize(long size) {        this.size = size;        return this;    }    @Override    public long getCurrent() {        return this.current;    }    @Override    public Page<T> setCurrent(long current) {        this.current = current;        return this;    }}

2.4 实现的重点mapper

import org.apache.ibatis.annotations.Param;public interface SysRoleMapper extends BaseMapper<SysRole> {    IPage<SysRole> searchPage(PageParam<SysRole> pageParam, @Param("name") String name);}

关联的是角色表和用户表

DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dxf.data.mapper.SysRoleMapper">    <select id="searchPage" resultType="com.dxf.data.entity.SysRole">        SELECT r.id,r.name,r.status,r.role_sort, a.name create_by ,r.create_time,r.update_time,r.remark        FROM sys_role r left join sys_user a on r.create_by=a.id        <where>            <if test="name != null and name != ''">                r.name like concat(#{name},'%')            if>        where>        order by r.role_sort    select>mapper>

2.5 其他层就是传下参数

@RestController@RequestMapping("/admin/role")@Api(tags  = "SysRoleControllr|角色控制器")public class SysRoleController {    @Autowired    SysRoleService roleService;        @GetMapping("/page")    @ApiOperation("角色列表分页查询")    public ResultJson page(PageParam<SysRole> pageParam,String likeKey) {        IPage<SysRole> iPage = roleService.searchPage(pageParam,likeKey);        Map<String, Object> map = new HashMap<>();        map.put("rows",iPage.getRecords());        map.put("total",iPage.getTotal());        return ResultJson.ok().data(map);    }public interface SysRole}Service extends IService<SysRole> {        IPage<SysRole> searchPage(PageParam<SysRole> pageParam,String name);}@Servicepublic class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {    @Override    public IPage<SysRole> searchPage(PageParam<SysRole> pageParam,String name) {        return baseMapper.searchPage(pageParam,name);    }}

来源地址:https://blog.csdn.net/weixin_42408648/article/details/127104946

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mybatis-plus多表分页查询最佳实现(简单)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mybatis-plus多表分页查询最佳实现(简单)

1.简介 在Mybatis Plus 中,虽然IService 接口帮我们定义了很多常用的方法,但这些都是 T 对象有用,如果涉及到 多表的查询,还是需要自定义Vo 对象和自己编写sql 语句,Mybatis Plus提供了一个Page 对
2023-08-23

Mybatis-Plus实现分页查询

Mybatis-Plus实现分页查询 文章目录 Mybatis-Plus实现分页查询1.1技术概述1.2技术详述1.2.1配置分页插件1.2.2自定义分页1、如果你的mapper没有继承BaseMapper2、如果你的mapper继
2023-08-17

mybatis-plus 多表关联条件分页查询

此处以一对多,条件分页查询为例: 一.表结构: 主表 CREATE TABLE `t_user` ( `id` bigint NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAU
2023-08-20

oracle+mybatis-plus+springboot怎么实现分页查询

本篇内容主要讲解“oracle+mybatis-plus+springboot怎么实现分页查询”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle+mybatis-plus+springb
2023-06-20

如何在springboot中使用mybatis-plus实现一个多表分页查询功能

这篇文章将为大家详细讲解有关如何在springboot中使用mybatis-plus实现一个多表分页查询功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.新建一个springboot工程
2023-06-07

Mybatis-Plus支持GBase8s分页查询的实现示例

本文主要介绍了使 Mybatis-Plus 支持 GBase8s 的分页查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-09

解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题

Mybatis-Plus版本3.4之后,对分页查询进行了优化 对于单表查询是没有问题的。而需要多表关联查询(自写sql)时,就会查询调用Mybatis-Plus的 .page(E page, Wrapper queryWrapper);
2023-08-21

SpringBoot MP简单的分页查询测试怎么实现

这篇文章主要讲解了“SpringBoot MP简单的分页查询测试怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot MP简单的分页查询测试怎么实现”吧!导入最新的mp
2023-07-05

编程热搜

目录