在 MyBatis-Plus 中,如何使用 QueryWrapper 进行多表联合查询?
在 MyBatis-Plus 中,使用 QueryWrapper
进行多表联合查询通常涉及到自定义 SQL 语句,并通过 MyBatis-Plus 提供的映射机制来处理查询结果。以下是一个简单的例子,展示如何使用 QueryWrapper
来编写一个多表联合查询的方法。
首先,假设我们有两个表:user
和 order
,我们想要查询用户及其对应的订单信息。
- 在 Mapper 接口中定义方法,并使用
@Select
注解来编写自定义 SQL 语句。
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT u.*, o.id as order_id, o.order_number FROM user u LEFT JOIN order o ON u.id = o.user_id WHERE u.id = #{userId}")
List<UserOrderDTO> getUserOrders(@Param("userId") Long userId);
}
- 创建一个 DTO 类来映射查询结果。
public class UserOrderDTO {
private Long id;
private String username;
// 其他用户字段
private Long orderId;
private String orderNumber;
// 其他订单字段
// 省略 getter 和 setter 方法
}
- 在服务层调用 Mapper 接口方法。
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<UserOrderDTO> getUserOrders(Long userId) {
return userMapper.getUserOrders(userId);
}
}
以上代码展示了如何在 MyBatis-Plus 中使用自定义的 SQL 语句进行多表联合查询,并通过 DTO 类来映射查询结果。这种方式提供了较高的灵活性,允许你编写复杂的 SQL 以满足特定的查询需求。
评论已关闭