新版MybatisPlus多表联查加分页(简单版)

DBC 1.3K 0
温馨提示

前情提示,看这篇博客之前默认已经大概的了解了Mybatic-Plus,这里提供两种简单的Mybatic-Plus的多表联查加分页形式

一、首先你需要分页插件、简单的接口响应类,进入下面的传送门即可

新版MybatisPlus分页插件配置

3年前 (2021-05-06) 0
新版MybatisPlus多表联查加分页(简单版)插图

统一接口响应协议JsonData-响应工具类封装

2年前 (2021-11-23) 0
新版MybatisPlus多表联查加分页(简单版)插图2

二、需要一个最终返回的VO类

UserPageVO


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.util.Date;

/**
 * @author DBC
 * @date 2022/4/29 11:50
 */
@Data
public class UserPageVO {

    private Integer id;

    private String name;

    private String age;

    private String devName;

    private Date devTime;

}

三、数据库很简单,如下图

用户表

新版MybatisPlus多表联查加分页(简单版)插图4

部门表

新版MybatisPlus多表联查加分页(简单版)插图6

准备工作结束,接下来就是直接使用了,我们看第一种:XML形式实现

XML形式

mapper中添加以下代码

Page<UserPageVO> selectuserlistpage(Page<UserPageVO> tPage, int id);
温馨提示

Alt + Enter(回车),可以很方便在xml中直接生成一串空代码,我们在里面添加就行!

    <select id="selectuserlistpage" resultType="com.example.test05.demo.model.UserPageVO">
        select * from tb_user u
        left join
        tb_dev d on u.dev_id = d.id
        where u.id = #{id}
    </select>

如上,很简单的sql语句

Controller测试一波

    /**
     * 综合测试
     *
     * @param page 页码
     * @param size 个数
     * @return
     */
    @GetMapping("test")
    public JsonData getAllQuestionWithStudentByPage(int page, int size, int id) {

        Page<UserPageVO> questionStudent = tbUserMapper.selectuserlistpage(new Page<>(page, size), id);
        if (questionStudent.getRecords().size() == 0) {
            return JsonData.buildError("数据为空");
        } else {
            return JsonData.buildSuccess(questionStudent);
        }
    }
温馨提示

相信看起来非常简单,结果就是如图所示新版MybatisPlus多表联查加分页(简单版)插图8

我们看第二种:注解形式实现

注解形式

mapper中添加以下代码

     @Select("select * from tb_user u left join tb_dev d on u.dev_id = d.id where u.id = #{id}")
     Page<UserPageVO> selectuserlistpage2(Page<UserPageVO> tPage, int id);

什么都不需要了,直接Controller测试即可

    /**
     * 综合测试
     *
     * @param page 页码
     * @param size 个数
     * @return
     */
    @GetMapping("test2")
    public JsonData getAllQuestionWithStudentByPage2(int page, int size, int id) {

        Page<UserPageVO> questionStudent = tbUserMapper.selectuserlistpage2(new Page<>(page, size), id);
        if (questionStudent.getRecords().size() == 0) {
            return JsonData.buildError("数据为空");
        } else {
            return JsonData.buildSuccess(questionStudent);
        }

    }
温馨提示

结果就是如图所示,其实都一样!
新版MybatisPlus多表联查加分页(简单版)插图10

两种方式,喜欢哪一种都可以使用,可以具体看你们公司的规范要求!各有利弊,百度自己查查就好

温馨提示

这里只是简单的多表联查分页操作,如果想复杂一点的,可以好好学习Mybatic的xml操作,挺多有意思的操作的,想暴力解决可以看这篇文章

一篇文章搞懂Mybatic的多表联查!

3年前 (2021-04-19) 0
新版MybatisPlus多表联查加分页(简单版)插图12

让我们结合上面这篇文章来操作一下

表变化

首先我们的表有了一点点的变化,多了一个表tb_order(订单表),还有部门表和订单表的id都改为了如下图对应的字段,具体原因下面说

新版MybatisPlus多表联查加分页(简单版)插图14
新版MybatisPlus多表联查加分页(简单版)插图16

温馨提示

这里要注意一下,也就是我们上面标注出来的地方,这两个位置的id如果和主表(tb_user)一样的话,那么会出现collection标识下的list只出现一条数据,小伙伴们可以自己尝试一下[aru_41],改掉就好。这里有可能表是不能改的,那么我们使用别名也可以实现,如下面的两张图
新版MybatisPlus多表联查加分页(简单版)插图18
新版MybatisPlus多表联查加分页(简单版)插图20
我们可以发现,依然是可以实现的

结果输出json

点击查看完整内容

发表评论 取消回复
表情 图片 链接 代码

分享