是的,MyBatis Plus (MP) 支持多表的联合查询。
在使用 MP 进行多表联合查询时,可以使用 @TableName 注解来指定表名,并使用 @TableField 注解来指定关联的字段。同时,还可以使用 MP 提供的 Lambda 查询器和 QueryWrapper 来方便地编写 SQL 查询语句。
以下是一个简单的多表联合查询的示例:
@TableName("order_detail")
public class OrderDetail {
@TableId
private Long id;
@TableField("order_id")
private Long orderId;
// 省略其他字段和 getter/setter 方法
}
@TableName("order")
public class Order {
@TableId
private Long id;
// 省略其他字段和 getter/setter 方法
}
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
public List<OrderDetail> getOrderDetailByOrderId(Long orderId) {
QueryWrapper<OrderDetail> wrapper = new QueryWrapper<>();
wrapper.eq("order_id", orderId);
return orderDetailMapper.selectList(wrapper);
}
public List<Order> getOrderWithDetail() {
return orderMapper.selectList(null);
}
}
在上述示例中,Order 和 OrderDetail 分别对应数据库中的两张表。OrderDetail 表中有一个 order_id 字段用于关联 Order 表。通过使用 @TableField 注解指定字段名,然后使用 MP 提供的 QueryWrapper 来构造查询条件,即可实现多表联合查询。
需要注意的是,在进行多表联合查询时,需要保证查询语句的正确性和性能。特别是当联合查询的表比较多或者查询条件比较复杂时,需要仔细考虑查询语句的编写方式,以免影响查询性能和结果的准确性。