Mybatis-plus带查询参数的多表关联

本文介绍了如何在Mybatis-Plus中实现带查询参数的多表关联查询。通过创建VO对象、扩展Mapper接口、构造查询Wrapper以及前端调用来完成复杂查询。详细步骤包括在Service层和Mapper层的操作,以及前端接口的对接。
摘要由CSDN通过智能技术生成

Mybatis-plus带查询参数的多表关联

Mybatis-Plus缺省是不带多表关联功能,多表关联需要作用mapper.xml写SQL语句,或都在domain的mapper对象下使用@select注解写SQL语句,用后种方法根据自己的需要,花了一天时间学习研究,做了自己的第一个带查询条件的多表关联SQL,特此记录:

一、功能说明

当前有两个表,第一表是景区基本信息,第二个表是景区的文档记录表,第二个表只记录了景区ID代码,查管理第二个表时,需要使用第一个表的信息如景区名称,景区所在行政区划的编码,并要根据表一的景区名称,区划编码,表二的文件代码、文件主题,景区编码进行查询。

二、实现方法

1、编写VO对象

增加了个VO对象,扩展表二对象,同时需要将使用表一的字段添加上,形成一个完整的View对象,且续参数传递,查询操作对使用这个VO对象。

@Data
public class MapScenicFileVO extends MapScenicFile {
   
    private String scenicName;
    private String scenicAdcode;
}

2、mapper对象扩展函数

添加表联合功能,使用@select注解方式添加,这个表是采用join进行联合,以便后面传递wrapper查询条件组合。使用where子句联合,后面传递参数时又会产生where子句,导致查询错误。

注意${ew.customSqlSegment}是传递自定义条件到SQL工厂。

  /**
     * 景区文件联合景区名称查询
     *
     * @param wrapper       翻页对象,可以作为 xml 参数直接使用,传递参数 Page 即自动分页
     * @return 列表
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能来简化开发。在MyBatis-Plus中,实现连表查询可以通过使用Wrapper(条件构造器)来实现。 下面是使用MyBatis-Plus实现连表查询的步骤: 1. 创建Wrapper对象:使用QueryWrapper或者LambdaQueryWrapper来创建一个Wrapper对象,用于构建查询条件。 2. 设置关联表:通过调用Wrapper对象的join方法,传入关联表的表名关联条件,来设置关联表。 3. 执行查询:通过调用MyBatis-Plus提供的selectList或者selectPage方法,传入Wrapper对象作为参数,来执行查询操作。 下面是一个示例代码,演示如何使用MyBatis-Plus实现连表查询: ```java // 创建Wrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 设置关联表 wrapper.join("user_role", "user_role.user_id = user.id") .join("role", "role.id = user_role.role_id") .select("user.id", "user.name", "role.name as roleName"); // 执行查询 List<Map<String, Object>> userList = userMapper.selectMaps(wrapper); ``` 在上面的示例中,我们创建了一个QueryWrapper对象,并通过join方法设置了两个关联表:user_role和role。然后通过select方法指定了需要查询的字段。最后调用selectMaps方法执行查询,并将结果以List<Map<String, Object>>的形式返回。 注意:这里使用了selectMaps方法来返回结果,可以得到一个包含多个Map对象的List,每个Map对象表示一条查询结果,其中key为字段名,value为字段值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值