【186、mp可以做多表的联合查询吗】

181 阅读1分钟

是的,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);
    }
}

在上述示例中,OrderOrderDetail 分别对应数据库中的两张表。OrderDetail 表中有一个 order_id 字段用于关联 Order 表。通过使用 @TableField 注解指定字段名,然后使用 MP 提供的 QueryWrapper 来构造查询条件,即可实现多表联合查询。

需要注意的是,在进行多表联合查询时,需要保证查询语句的正确性和性能。特别是当联合查询的表比较多或者查询条件比较复杂时,需要仔细考虑查询语句的编写方式,以免影响查询性能和结果的准确性。