mybatisplus如何在xml的连表查询中使用queryWrapper

目录
  • 在xml的连表查询使用queryWrapper
    • 在mapper接口中定义方法
    • 在mapper xml中
    • 调用该方法
  • mapper.xml 配合queryWrapper写法
    • mapper中的接口这么写
    • xml中${ew.customSqlSegment}

在xml的连表查询使用queryWrapper

在mapper接口中定义方法

List<Map<String,Object>> linkUserAndDept(@Param("ew1") Wrapper<User> wrapper1, @Param("ew2") Wrapper<Dept> wrapper2);

在mapper xml中

  <select id="linkUserAndDept" resultType="java.util.Map">
        select u.name,u.age,u.address,d.* from user u left join dept d on u.deptid = d.deptid
        <where>
            <trim prefixOverrides="AND">
                <if test="ew1!=null and ew1.sqlSegment!=null and ew1.sqlSegment != ''">
                    AND ${ew1.sqlSegment}
                </if>
                <if test="ew2!=null and ew2.sqlSegment!=null and ew2.sqlSegment != ''">
                    AND ${ew2.sqlSegment}
                </if>
            </trim>
        </where>
    </select>

调用该方法

QueryWrapper<User> userWrapper = Wrappers.<User>query();
QueryWrapper<Dept> deptWrapper = Wrappers.<Dept>query();    
    
userWrapper.eq("u.name","张三");
userWrapper.setParamAlias("ew1"); //这里要设置别名,不然会报异常
/*deptWrapper.eq("d.deptname","开发部");
deptWrapper.setParamAlias("ew2");*/    
    
List<Map<String, Object>> map = userMapper.linkUserAndDept(userWrapper,deptWrapper);

mapper.xml 配合queryWrapper写法

mapper中的接口这么写

IPage selectPosts(Page page, @Param(Constants.WRAPPER) QueryWrapper wrapper);

xml中${ew.customSqlSegment}

就是querywrapper的条件

select * from user_collection ${ew.customSqlSegment}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决

    目录 LambdaQueryWrapper使用 int默认值问题 问题现象 解决方法 问题分析 小结一下 lambdaquerywrapper in使用样例 直接使用列名报错 下面这样ok LambdaQueryWrapper使用 int默认值问题 问题现象 一顿操作,感觉不可能有问题,调试后发现,没传任何参数,日志里面居然有两个参数, 进入对象中发现 解决方法 int类型替换成 Integer 类型 问题消失 问题分析 1.了解一下int int: int 数据类型是32位.有符号的以二进制补

  • mybatisplus where QueryWrapper加括号嵌套查询方式

    目录 where QueryWrapper加括号嵌套查询 mybatisplus查询语句加括号(.or(),.and()) where QueryWrapper加括号嵌套查询 之前的代码是这个样子的: QueryWrapper<RyxyMemberEntity> wrapper = new QueryWrapper<>();     wrapper.eq("phoneNumber", phone);     if (StringUtils.isEmpty(sce

  • MybatisPlus使用queryWrapper如何实现复杂查询

    目录 使用queryWrapper实现复杂查询 自定义的queryWrapper实现查询 声明提要 核心代码 使用queryWrapper实现复杂查询 // mp实现负责查询操作 @Test public void testSelectQuery(){ //1,创建QueryWrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 2,通过QueryWrapper设置条件 // ge大于等于 gt大于 le小于等

  • 关于QueryWrapper,实现MybatisPlus多表关联查询方式

    目录 QueryWrapper实现MybatisPlus多表关联查询 1.dao层接口使用Select注解写SQL 2.service层代码示例 3.反射工具类 4.判空工具类 MybatisPlus QueryWrapper简单用法 QueryWrapper实现MybatisPlus多表关联查询 1.dao层接口使用Select注解写SQL 重点:@Param("ew") Wrapper参数是必须,因为${ew.customSqlSegment} 底层其实就是where 条件,所以为

  • mybatisplus如何在xml的连表查询中使用queryWrapper

    目录 在xml的连表查询使用queryWrapper 在mapper接口中定义方法 在mapper xml中 调用该方法 mapper.xml 配合queryWrapper写法 mapper中的接口这么写 xml中${ew.customSqlSegment} 在xml的连表查询使用queryWrapper 在mapper接口中定义方法 List<Map<String,Object>> linkUserAndDept(@Param("ew1") Wrapper&l

  • mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例

    目录 前言 1.自定义SQL 2.多表查询 3.多表分页查询 4.多表分页条件查询 总结 前言 本文介绍了在mybatis-plus中如何实现:自定义SQL语句,多表查询语句,多表分页查询语句 在说怎么实现之前我们要先明白一个概念,就是mybatis-plus是在mybatis的基础上进行增强,并不做改变,所以mybatis的操作在mybatis-plus中也是一样可以使用的,咱们直接上代码 1.自定义SQL 在mapper中自定义一个方法即可 @Repository public interf

  • thinkphp中多表查询中防止数据重复的sql语句(必看)

    下面先来看看例子: table id name 1 a 2 b 3 c 4 c 5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. select *, count(distinct name) from table group by name 结果: id name count(distinct name) 1 a 1 2 b 1 3 c 1 最后一 项是多余的,不用管就行了 tp2.0手册   搜索连贯操作 可看到相关的资料 SELECT cat_id, COUNT(*) AS

  • MySQL多表查询机制

    目录 1.前言 2.等值连接和非等值连接 2.1等值连接 2.2非等值连接 3.自连接和非自连接 3.1自连接 3.2非自连接 4.内连接和外连接 4.1测试数据 4.2左外连接 4.3右外连接 4.4全外连接 附录:测试数据SQL脚本 1. 前言 在SQL开发当中,多表联查是绝对绕不开的一种技能.同样的查询结果不同的写法其运行效率也是千差万别. 在实际开发当中,我见过(好像还写过~)不少又长又臭的查询SQL,数据量一上来查个十几分钟那是家常便饭. 因此,深入理解SQL的多表查询机制,少写一些慢

  • 结合mybatis-plus实现简单不需要写sql的多表查询

    项目地址: GITHUB (本地下载) java mybatis 多表查询 简介 实现简单的实体类操作多表,  首先你的项目是使用了mybatis-plus 才可以使用 设计说明 如何关联表? 找第一张表注解为 TableId (mybatis-plus 注解)的属性名, 到每二张表找同样的属性名, 如果没找到,反过来找,如果还没找到,挨个属性找.以此类推,实现关联的前提条件是 主从表的关联例名必须一样 // user 表 @TableId private Integer userId // a

  • MybatisPlus自定义Sql实现多表查询的示例

    前言 前段时间看同事的代码,发现他用Layui+MybatisPlus做分页查询做得很规整,认真看了下代码发现这种方式不仅适用于与Layui做分页查询,在任何时候需要多表联查的时候都可以用到.  以下以Layui分页查询作为参考,在实际应用中可以灵活使用. 分页查询VO对象 @Data @AllArgsConstructor @NoArgsConstructor public class LayuiData { private Integer code=0; private Long count

  • MyBatis-Plus 如何实现连表查询的示例代码

    在项目开发中,难免会遇到连表查询的操作. 项目中用的是 MyBatis-Plus,是新使用的框架.官方文档看这里. 我写过一篇通过单元测试来验证 MyBatis-Plus 的 CRUD 操作.点这里跳转 今天遇到连表查询的问题,特此记录一下. 遇到需要连表操作,想起 MyBatis 的操作连表查询,要是 MyBatis-Plus 也像 MyBatis 一样,就脑壳痛了.(MyBatis-Plus 是 MyBatis 的增强版) 脑壳痛归脑壳痛,先动手干. 首先 因为官方的内置接口方法都是针对单表

  • MyBatis-Plus联表查询(Mybatis-Plus-Join)的功能实现

    目录 引入依赖 数据准备 修改Mapper 查询 分页查询 最后 mybatis-plus作为mybatis的增强工具,简化了开发中的数据库操作.一旦遇到left join或right join的左右连接,还是得老老实实的打开xml文件,手写上一大段的sql语句.今天总结一下一款叫做mybatis-plus-join的工具(后面就简称mpj了),可以用类似mybatis-plus中QueryWrapper的方式来进行联表查询. 引入依赖 首先在项目中引入引入依赖坐标,因为mpj中依赖较高版本my

  • MyBatis XML方式的基本用法之多表查询功能的示例代码

    1. 多表查询 在之前,我们示例的2个查询都是单表查询,但实际的业务场景肯定是需要多表查询的,比如现在有个需求: 查询某个用户拥有的所有角色.这个需求要涉及到sys_user,sys_user_role,sys_role三张表,如何实现呢? 首先,在SysUserMapper接口中定义如下方法. /** * 根据用户id获取角色信息 * * @param userId * @return */ List<SysRole> selectRolesByUserId(Long userId); 然后

  • MyBatis-Plus实现连表查询的方法实例

    目录 使用方法 安装 使用 核心类 MPJLambdaWrapper和MPJQueryWrapper MPJLambdaWrapper用法 MPJQueryWrapper 总结 mybatis-plus-join gitee github 使用方法 安装 在项目中添加依赖 <dependency> <groupId>com.github.yulichang</groupId> <artifactId>mybatis-plus-join</artifac

随机推荐