mybatis-plus 中连表查询出现 ambiguous的解决办法

本文介绍了在使用MybatisPlus进行多表联查时,遇到字段名重复引发的SQL语句歧义问题。通过示例和解决办法,展示了如何通过左连接并指定别名来避免错误。希望对在实际项目中遇到类似问题的开发者有所帮助。
摘要由CSDN通过智能技术生成

例子:Mybatis plus 多表联查字段名重复报错 Column ‘id‘ in where clause is ambiguous

一般这种情况呢,大家百度一查就知道是这个字段模糊导致的,直接来说就是,这个id在当前sql语句中的几个表都有,不能确定是哪个表的字段。

解决办法:

mapper:

select aco.*,ac.course_name as courseName from app_course_order as aco
left join app_course as ac on ac.id = aco.course_id
    if (param.getUserId() != null) {
        wrapper.or().eq("aco.user_id", param.getUserId());
    }

就是在eq方法中的那个字段参数,改为表的别名.字段名

记录的一次mybatis查询的一次小问题,希望能帮助到有需要的人。

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、付费专栏及课程。

余额充值