MyBatis-Plus官网

前言

MyBatis-Plus支持使用 Wrapper 自定义SQL, 但是官方文档描述简陋, 本文将结合实例做一个扩展补充
自定义SQL一般用于解决多表联合查询问题, 与使用视图查询, 使用动态SQL查询相比各有优劣, 可根据实际需要做选择
用XML实现自定义SQL

实例

service
User user = UserUtil.getUser();
QueryWrapper<User> ew = Wrappers.<User>query().eq("USER.CLIENT", user.getClient());
List<User> result = baseMapper.getUser(user, ew);
Mapper.java
List<User> getTransferOrderPostList(User user, @Param(Constants.WRAPPER)Wrapper<User>  ew);
Mapper.xml
SELECT *
FROM `USER` `USER`LEFT JOIN `USER_DATA` `USER_DATA` ON `USER`.`ID` = `USER_DATA`.`USER_ID`
WHERE `USER`.is_delete = '0'AND ${ew.SqlSegment}

或者

SELECT *
FROM `USER` `USER`LEFT JOIN `USER_DATA` `USER_DATA` ON `USER`.`ID` = `USER_DATA`.`USER_ID`
${ew.customSqlSegment} AND `USER`.is_delete = '0'

注意事项

  1. mybatis-plus版本最低为 3.0.7(这个一般没问题)
  2. 传递条件的参数名要么叫ew, 或者加上注解@Param(Constants.WRAPPER)
  3. 如果是多表关联查询, 设置条件时应使用"表明.字段名", 例如:“USER.CLIENT”
  4. 在XML中写SQL时, Wrapper有多种方法, 其中方法SqlSegment只包含条件语句, 不包含任何关键词. 方法customSqlSegment包含WHERE+条件语句, 必须用于第一个条件. 详见实例

使用 Wrapper 自定义SQL相关推荐

  1. Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案

    问题描述 '(', ',', CROSS, FOR, GROUP, HAVING, INNER, INTO, JOIN, LEFT, LIMIT, LOCK, NATURAL, ORDER, PROC ...

  2. MybatisPlus自定义 Sql 实现多表查询

    目录 概述 编写代码 案例流程说明 控制层 服务层 数据访问层 自定义 SQL 测试 MybatiPlus文档 概述 MyBatis-Plus (opens new window)(简称 MP)是一个 ...

  3. mybatis plus按时间段查询_MybatisPlus自定义Sql实现多表查询的示例

    前言 前段时间看同事的代码,发现他用Layui+MybatisPlus做分页查询做得很规整,认真看了下代码发现这种方式不仅适用于与Layui做分页查询,在任何时候需要多表联查的时候都可以用到. 以下以 ...

  4. 自定义报错返回_MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询

    本章目录 自定义sql 分页查询 1. 自定义sql 在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示: 第一种: 第二种 ① application.yml加入下面配置 my ...

  5. mybatis-plus自定义sql报错 ew.customSqlSegment

    mybatis-plus自定义sql报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibat ...

  6. MyBatis-Plus 之自定义sql

    推荐:MyBatis Plus汇总 MyBatis-Plus 之自定义sql 首先创建一个数据库表,如下图所示: 然后创建一个Spring Boot项目,pom.xml和配置如下: <?xml ...

  7. 关于Mybatis-plus多表联查自定义sql分页查询

    问题描述: 使用mybatis-plus进行开发过程中,单表得增删改查等都可以利用封装好的方法,而一些场景设计多表联合查询,且需要自定义字段的,就需要进行自定义sql 使用方法: 1.service中 ...

  8. Mybaits自定义SQL

    最近有个同事要包装一个可以执行sql语句的功能用的是mybatis 最开始他想到的方案是拿到数据库连接再执行sql语句. 后来出了某些错误来问我,为了寻求比较快的解决方法于是我就试试了下下面的方法. ...

  9. 工作流实战_27_flowable 自定义sql查询

    项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 业务场景:在实际开发中,由于我们需要一些flowable的个性化查询,而且他们提供的ap ...

最新文章

  1. jQuery选择器和选取方法 http://www.cnblogs.com/MaxIE/p/4078869.html
  2. 【转】我们到底为了什么钻研技术?
  3. 控制台服务编写 Linux,一步步搭建ubuntu server console(控制台,字符模式)开发环境...
  4. bat 自动输入密码_三轴自动焊接,三轴搬运机械手示教系统简易说明,分秒学会...
  5. php中的break语句格式,PHP中break语句的应用
  6. Java Calendar 基本用法
  7. Delphi2CS破解 Delphi 转换C#
  8. 运输层课后第61题解读
  9. JS判断当前DOM树是否加载完毕
  10. 分享一个最终幻想勇气启示录的脚本,能自动刷图打觉醒材料
  11. python绘图工具reportlab介绍
  12. 拉杆音响电池升压芯片4.2V转12V2.5A大功率升压芯片
  13. Django菜鸟教程
  14. 寻找春天nbsp;九宫格日记-2011.09.20
  15. win7局域网计算机无法访问,win7局域网不能访问怎么办_win7系统电脑无法访问局域网怎么办-win7之家...
  16. win10操作系统如何整理桌面
  17. ubuntu14.04下deb文件安装mysql数据库
  18. 面试过程中应注意的问题与禁忌
  19. 触发器一(触发器简介)
  20. ChessBoard棋盘覆盖问题

热门文章

  1. Error: Index .kibana belongs to a version of Kibana that cannot be automatically migrated. Reset it
  2. Gin Web 网络框架
  3. 【高危安全通告】微软8月多个漏洞修复
  4. xlsxwriter进度条php,PHP导出Excel数据导出,前端进度条实现方式
  5. 怎么让抖音快速涨粉之抖音数据分析
  6. linux软件管理及软件仓库
  7. 怎样用office Word2003打开docx格式文档???
  8. 苹果电容笔和apple pencil区别是什么?值得入手的电容笔品牌排行榜
  9. ggplot绘制箱线图
  10. 计算机的文档库在哪哪里,电脑的word文档在哪里