mybatis plus join里的怎么使用内连接
时间: 2025-01-08 18:32:55 浏览: 34
MyBatis Plus 中 Inner Join 使用方法
在 MyBatis Plus 版本 3.3.0 及以上版本中,可以方便地使用 MPJLambdaWrapper
来执行复杂的联表查询操作[^1]。下面是一个具体的例子展示如何利用 MyBatis Plus 执行内连接 (Inner Join),特别是当涉及到两个表格之间的关联时。
假设存在两张表:用户表 (user
) 和 用户基本信息表 (user_info
)。为了获取用户的详细资料,可以通过以下方式构建服务层逻辑:
创建实体类映射
首先定义相应的 Java 实体类用于表示数据库中的记录结构。
public class User {
private Long id;
private String username;
// getter and setter methods...
}
public class UserInfo {
private Long userId; // 对应 user 表的外键字段
private Integer age;
private String email;
// getter and setter methods...
}
编写 Mapper 接口
接着创建对应的 Mapper 接口继承 BaseMapper 并指定泛型参数为联合后的对象类型。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserWithInfoMapper extends BaseMapper<User> {}
构建 Wrapper 查询条件
最后,在 Service 层编写业务逻辑代码,这里采用 Lambda 方式来简化语法并增强可读性。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import java.util.List;
@Service
public class UserServiceImpl extends ServiceImpl<UserWithInfoMapper, User> {
public List<Object[]> getUserAndInfo() {
MPJLambdaWrapper<User> wrapper = Wrappers.<User>lambdaQuery()
.select(User::getId, User::getUsername)
.select(UserInfo::getEmail, UserInfo::getAge)
.leftJoin(UserInfo.class, UserInfo::getUserId, User::getId);
return listObjs(wrapper);
}
}
上述代码片段展示了怎样通过 MPJLambdaWrapper
方法链调用来完成一次简单的内连接查询请求,并选择了所需列作为返回结果的一部分。此过程不仅限于两表间的简单关系处理;对于更复杂的情况同样适用,只需适当调整 SQL 语句即可满足需求[^4]。
相关推荐

















