定义OrderMapper
@Mapper
public interface OrderMapper {
Page<Order> queryOrderJoinItems(@Param("order") Wrapper order, @Param("item") Wrapper item, Page page);
}
定义OrderMapper.xml
<select id="queryOrderJoinItems" resultType="Order">
select a.*
from (select * from biz_order where deleted = 0
<if test="null != order">
and ${order.sqlSegment}
</if>
) as a
<if test="null != item">
join (
select * from biz_order_item where deleted = 0
and ${item.sqlSegment}
) as b
on a.id = b.order_id
</if>
</select>
编写Order查询
public class Test {
public Page<Order> queryPage(OrderRequest request) {
Wrapper<Order> orderWrapper = Wrappers.<Order>lambdaQuery()
.setParamAlias("order")
.eq(Order::getType, request.getType());
Wrapper<OrderItem> itemWrapper = null;
if (CollectionUtil.isNotEmpty(request.getSkuIdList())) {
itemWrapper = Wrappers.<OrderItem>lambdaQuery()
.setParamAlias("item")
.in(OrderItem::getSkuId, request.getSkuIdList());
}
Page<Order> queryPage = orderMapper.queryOrderJoinItems(orderWrapper, itemWrapper, Page.of(request.getPageIndex(), request.getSize()));
return queryPage;
}
}