实现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内嵌查询,希望能够帮助到你。祝你在学习和工作中顺利!