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

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 *FROMbook_order t2LEFT JOIN book_order_detail t1 ON t1.order_id = t2.order_id and t1.del_flag = 0LEFT JOIN t_sku t3 ON t1.sku_id = t3.idLEFT JOIN books t4 ON t4.book_id = t3.book_id${ew.customSqlSegment}</select>

调用

        // 查询构造器,如果是连表查询的话建议使用QueryWrapper,这样可以手动指定条件列名 例如:t2.xxxboolean 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");// 调用sqlPage<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关键字)
http://www.lryc.cn/news/317344.html

相关文章:

  • Vue的table组件合并行方法
  • 5. C语言字符串处理常用方法
  • ts--(入门到离职系列)
  • java后端常见问题
  • windows系统玩游戏找不到d3dx9_43.dll缺失,无法启动此程序的解决方法
  • MATLAB中mapminmax函数用法
  • 数据结构导航 -- 38篇
  • 前端性能优化 | CDN缓存
  • 【C#语言入门】17. 事件详解(上)
  • Charles无法打开导出的har文件解决方法
  • FFmpeg--FlvPaser源码:解析.flv输出.h264
  • 【项目笔记】java微服务:黑马头条(day02)
  • 每天五分钟计算机视觉:图像数据不足带来的问题和解决办法
  • 手机App防沉迷系统C卷(JavaPythonC++Node.jsC语言)
  • 【WEEK2】学习目标及总结【SpringMVC】【中文版】
  • Git版本工具学习
  • baidu, google和chatgpt -- 翻译对比
  • 高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图
  • 微信小程序修改placeholder样式
  • 爬虫案例1
  • 修改表结构
  • Rust 语言中的 into() 方法
  • MinIO权限提升漏洞CVE-2024-24747详细解决办法
  • “我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语
  • JS ATM练习案例(复习循环知识)
  • Android 二维码相关(一)
  • 利用tree命令自动保存文件层级结构
  • C++初阶:内存管理
  • vue和react的diff算法源码
  • Coordinate Attention(CVPR 2021)