Mybatis-plus手写SQL如何使用条件构造器和分页

Mybatis-plus手写SQL如何使用条件构造器和分页插件

前言:在使用mybatis-plus过程中,使用条件构造器和分页插件非常效率的提升开发速度,但有些业务需要使用连表查询,此时还想使用条件构造器和使用分页时应该如何操作呢?

Mapper接口层

public interface BookOrderMapper extends BaseMapperPlus<BookOrder, BookOrderVo> {
    List<OrderApp> getOrderAppList(@Param("orderState") String orderState);

    Page<OrderApp> getOrderAppPage(Page<OrderApp> page, @Param(Constants.WRAPPER) Wrapper<OrderApp> wrapper);
}

xml层

<select id="getOrderAppPage" resultMap="orderApp">
        SELECT *
        FROM
        book_order t2
        LEFT JOIN book_order_detail t1 ON t1.order_id = t2.order_id and t1.del_flag = 0
        LEFT JOIN t_sku t3 ON t1.sku_id = t3.id
        LEFT JOIN books t4 ON t4.book_id = t3.book_id
        ${ew.customSqlSegment}
    </select>

调用

        // 查询构造器,如果是连表查询的话建议使用QueryWrapper,这样可以手动指定条件列名 例如:t2.xxx
        boolean b = !StringUtils.equals(orderState, "0");
        QueryWrapper<OrderApp> queryWrapper = Wrappers.query(OrderApp.class);
        queryWrapper.eq("t2.user_id",userId);
        queryWrapper.eq(b,"t2.order_state",orderState);
        queryWrapper.eq("t2.del_flag","0");
        queryWrapper.orderByDesc("t2.create_time");

        // 调用sql
        Page<OrderApp> orderAppPage = bookOrderMapper.getOrderAppPage(new Page<>(page, pageSize), queryWrapper);

分页插件:

在返回结果使用Page< T >即可

条件构造器:

  1. mapper参数中添加 @Param(Constants.WRAPPER) Wrapper< T > wrapper (实参传递QuerWrapper或LamdaQuerWrapper都可以)
  2. 在sql的最后方添加 sql片段: ${ew.customSqlSegment} (带where关键字) 或 ${ew.sqlSegment}(不带where关键字)

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 08:28:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 08:28:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 08:28:07       82 阅读
  4. Python语言-面向对象

    2024-03-14 08:28:07       91 阅读

热门阅读

  1. Python之函数进阶-柯里化

    2024-03-14 08:28:07       37 阅读
  2. 蓝桥杯2023年-砍树(dfs,树上差分)

    2024-03-14 08:28:07       35 阅读
  3. [Django 0-1] Core.Checks 模块

    2024-03-14 08:28:07       41 阅读
  4. 海康抓图保存路径失败NET_DVR_CaptureJPEGPicture

    2024-03-14 08:28:07       59 阅读
  5. js使用canvas实现图片鼠标滚轮放大缩小拖拽预览

    2024-03-14 08:28:07       47 阅读
  6. libigl 网格面片随机赋色

    2024-03-14 08:28:07       46 阅读
  7. 模型的参数量、计算量、延时等的关系

    2024-03-14 08:28:07       38 阅读
  8. C语言(指针)单元练习二

    2024-03-14 08:28:07       33 阅读