当前位置: 首页 > article >正文

MybatisPlus编写join查询

定义OrderMapper

@Mapper
public interface OrderMapper {

    /**
     * 根据主、子表使用Wrapper过滤数据
     * @param order
     * @param item
     * @param page
     * @return
     */
    Page<Order> queryOrderJoinItems(@Param("order") Wrapper order, @Param("item") Wrapper item, Page page);
}

定义OrderMapper.xml

<!--定义join sql  Wrapper过滤条件使用${sqlSegment}替换-->
<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()
                //指定Mapper上的Wrapper变量名
                .setParamAlias("order")
                .eq(Order::getType, request.getType());
        Wrapper<OrderItem> itemWrapper = null;
        if (CollectionUtil.isNotEmpty(request.getSkuIdList())) {
            //编写子表过滤条件
            itemWrapper = Wrappers.<OrderItem>lambdaQuery()
                    //指定Mapper上的Wrapper变量名
                    .setParamAlias("item")
                    .in(OrderItem::getSkuId, request.getSkuIdList());
        }
        Page<Order> queryPage = orderMapper.queryOrderJoinItems(orderWrapper, itemWrapper, Page.of(request.getPageIndex(), request.getSize()));
        return queryPage;
    }
}

http://www.kler.cn/a/405867.html

相关文章:

  • 记录下jekins新建个前端部署配置项
  • 单片机学习笔记 9. 8×8LED点阵屏
  • ffmpeg区域颜色覆盖
  • Echarts中柱状图完成横向布局
  • 【MySQL】数据库的隔离级
  • 使用 vscode 调试 nodejs 代码
  • 数据分析-51-时间序列分解之局部均值分解LMD
  • 【Three.js基础学习】28.Coffee Smoke
  • 鸿蒙进阶篇-TextInputTextArea和Checkbox
  • E. Counting Arrays
  • 设计模式-创建型-工厂模式
  • 深度学习笔记24_天气预测
  • 51单片机--- 矩阵按键仿真
  • Mac M4苹果电脑M4上支持的AE/PR/PS/AI/ID/LrC/AU/DC/ME有哪些?
  • 【大模型】docker部署glm-4-9b-chat,并部署到服务器上
  • DHECDH密钥交互算法
  • 金融数据中心容灾“大咖说” | 英方软件的“分而治之”之道
  • YOLOv11来了,使用YOLOv11训练自己的数据集和预测 (保姆级无代码操作版)
  • 智象未来(HiDream.ai)技术赋能,开启AR眼镜消费时代
  • 【通俗理解】边际化技巧在概率论中的应用真的广泛吗? ——从理论到实践的全面探索