实现Java MyBatis Plus内嵌查询的步骤

1. 确保项目中已引入MyBatis Plus依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>x.x.x</version>
</dependency>

2. 创建实体类和对应的Mapper接口

创建实体类User和对应的Mapper接口UserMapper,代码如下:

// User.java
public class User {
    private Long id;
    private String name;
    private Integer age;
    private List<Role> roles;
    // 省略getter和setter方法
}

// UserMapper.java
public interface UserMapper extends BaseMapper<User> {
}

3. 创建Role实体类和对应的Mapper接口

// Role.java
public class Role {
    private Long id;
    private String roleName;
    // 省略getter和setter方法
}

// RoleMapper.java
public interface RoleMapper extends BaseMapper<Role> {
}

4. 修改UserMapper接口

在UserMapper接口中添加方法,用于内嵌查询Role信息:

// UserMapper.java
public interface UserMapper extends BaseMapper<User> {
    List<User> selectUserWithRoles();
}

5. 编写对应的Mapper XML文件

在resources目录下创建UserMapper.xml文件,编写内嵌查询的SQL语句:

<!-- UserMapper.xml -->
<select id="selectUserWithRoles" resultType="User">
    SELECT u.id, u.name, u.age, r.id AS role_id, r.role_name
    FROM user u
    LEFT JOIN user_role ur ON u.id = ur.user_id
    LEFT JOIN role r ON ur.role_id = r.id
</select>

6. 调用内嵌查询方法

在Service层中调用selectUserWithRoles方法,代码如下:

// UserService.java
@Service
public class UserService {
    
    @Autowired
    private UserMapper userMapper;
    
    public List<User> getUsersWithRoles() {
        return userMapper.selectUserWithRoles();
    }
}

类图

classDiagram
    User <|-- Role
    User : Long id
    User : String name
    User : Integer age
    User : List<Role> roles
    Role : Long id
    Role : String roleName

通过以上步骤,你可以成功实现Java MyBatis Plus内嵌查询,希望能够帮助到你。祝你在学习和工作中顺利!