MyBatis Plus 自定义多表联查方法
时间: 2024-02-10 20:04:47 浏览: 64
MyBatis Plus 提供了多种方法进行多表联查,包括使用 @TableField 注解、使用 @JoinTable 注解、使用 @TableId 注解等。以下是一种自定义多表联查方法:
1. 创建一个自定义的 SQL 语句方法,例如:
```java
@Select("SELECT u.*, 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 WHERE u.id = #{id}")
UserDto selectUserWithRoleById(Long id);
```
2. 创建一个 DTO 类,用于存放多表联查的结果,例如:
```java
@Data
public class UserDto {
private Long id;
private String username;
private String password;
private String email;
private String roleName;
}
```
3. 在 UserMapper 中添加 selectUserWithRoleById 方法的映射,例如:
```java
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT u.*, 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 WHERE u.id = #{id}")
UserDto selectUserWithRoleById(Long id);
}
```
4. 使用 UserMapper 中的 selectUserWithRoleById 方法进行多表联查,例如:
```java
UserDto userDto = userMapper.selectUserWithRoleById(1L);
System.out.println(userDto);
```
以上就是一种自定义多表联查方法,使用起来比较灵活,可以根据需要自由组合 SQL 语句,但需要注意 SQL 语句的正确性和安全性。
阅读全文