mybatis-plus ${ew.customSqlSegment} 使用的史诗级大坑

今天在使用mybatis-plus的时候偷懒${ew.customSqlSegment} 构造自定义sql结果。

${ew.customSqlSegment} 一直为“ ”。

本来以为是自己sql写错了,方法换来换去还是不行。

select id="mySelectPage" resultType="Customer">select * from  (select a.*,concat(concat(b.name,'-'),b.employee_id) as 'uploadUserName' from  customer a,user bwhere a.upload_user_id = b.id ) as c${ew.customSqlSegment}

结果输出一看

System.out.println(queryWrapper.getCustomSqlSegment());
System.out.println(queryWrapper.getSqlSelect());
System.out.println(queryWrapper.getSqlSegment());

全是空

最后发现在官方的备注中

 /*** 获取自定义SQL 简化自定义XML复杂情况* <p>使用方法</p>* <p>`自定义sql` + ${ew.customSqlSegment}</p>* <p>1.逻辑删除需要自己拼接条件 (之前自定义也同样)</p>* <p>2.不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦)</p>* <p>3.用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!)</p>* <p>4.ew是wrapper定义别名,可自行替换</p>*/public String getCustomSqlSegment() {MergeSegments expression = getExpression();if (Objects.nonNull(expression)) {NormalSegmentList normal = expression.getNormal();String sqlSegment = getSqlSegment();if (StringUtils.isNotBlank(sqlSegment)) {if (normal.isEmpty()) {return sqlSegment;} else {return Constants.WHERE + StringPool.SPACE + sqlSegment;}}}return StringPool.EMPTY;}

而我刚好触犯第二条,我直接用实体类构造的queryWrapper,所以一直是null。

被烦了一天,特此记录!!!

mybatis-plus ${ew.customSqlSegment} 使用的史诗级大坑相关推荐

  1. mybatis plus中的${ew.sqlSegment},${ew.sqlSelect},${ew.customSqlSegment},${ew.sqlSet}使用

    ew是mapper方法里的@Param(Constants.WRAPPER) Wrapper queryWrapper对象 首先判断ew.emptyOfWhere是否存在where条件,有的话再拼接上 ...

  2. mybatis plus中的${ew.sqlSegment},${ew.sqlSelect},${ew.customSqlSegment}使用

    ew是mapper方法里的@Param(Constants.WRAPPER) Wrapper queryWrapper对象 首先判断ew.emptyOfWhere是否存在where条件,有的话再拼接上 ...

  3. Mybatis Plus ${ew.sqlSegment} 与 ${ew.customSqlSegment}的使用区别

    <where>${ew.sqlSegment} </where> 而使用${ew.customSqlSegment} 则省略 <where></where&g ...

  4. Mybatis Plus ${ew.sqlSegment} 与 ${ew.customSqlSegment}

    <where>${ew.sqlSegment} </where> 而使用 ${ew.customSqlSegment} 则省略 <where></where& ...

  5. MybatisPlus_${ew.sqlSelect},${ew.sqlSet},${ew.sqlSegment},${ew.customSqlSegment}的使用

    说明: ${ew.sqlSelect}         拼接select SQL主体 ${ew.sqlSet}         拼接update SQL主体 ${ew.sqlSegment}      ...

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

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

  7. MP之自定义分页,多表查询带分页带条件(Error evaluating expression ‘ew.customSqlSegment‘.或 Invalid bound statement)

    一.问题 前端所需数据: 但成绩表中只有考生的id及试卷的id,此时就需要进行多表查询,通过考生的id获取姓名字段,通过试卷的id获取试卷名称.分别需要使用到三张表,成绩表,试卷表,考生表.同时需要做 ...

  8. mybatis-plus的${ew.sqlSegment},${ew.sqlSelect},${ew.sqlSet},${ew.customSqlSegment}使用与区别

    说明: ew是mapper方法里的@Param(Constants.WRAPPER) Wrapper queryWrapper对象 1.${ew.customSqlSegment} 会直接在前面添加 ...

  9. mybatis-plus使用${ew.customSqlSegment}自定义查询,用数据库不存在的字段作为条件

    场景 工作中需要用表中不存在的字段作为条件进行查询 之前该字段使用了mybatis-plus 的 @TableField(exist = false)注解进行标记 而sql又使用了mybatis-pl ...

最新文章

  1. R语言使用timeROC包计算存在竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线(Time-dependent R
  2. Block 的循环引用
  3. 第一行冻结_EXCEL函数tips(4) 数据冻结和查找
  4. mysql 语句检查_mysql查询语句
  5. python项目开发视频
  6. 内层元素设置position:relative后父元素overflow:hidden overflow:scroll失效 解决方法
  7. JavaEye中导入Csdn博客问题
  8. 数据结构与算法分析(一)基础
  9. python playsound播放时关闭_python - 使用playsound模块停止音频 - 堆栈内存溢出
  10. TMS320C64x DSP L1 L2 Cache架构(1)——C64x Cache Architecture
  11. 史上最全的程序员常用英语词汇 建议收藏!
  12. 智能人物画像综合分析系统——Day16
  13. 高薪职业,英年早秃?关于程序员,多的是你不知道的事……
  14. 录制音频文件大小的计算
  15. linux内核 初始化 wifi,Linux驱动(六)----Wifi基础
  16. Log4j2漏洞发展历程及解决方案
  17. mysql保存微信昵称特殊字符
  18. 力扣6. Z 字形变换
  19. 辗转相除法详解(C语言实现)
  20. Scaling Instruction-Finetuned Language Models翻译

热门文章

  1. ios 新浪微博网页登陆分享 {error:userinfoerror pos:5}
  2. Nuist集训队专题:数论
  3. 1、第一次亲密接触Linux
  4. 一个完整的大作业:80电影天堂网站
  5. 智能卡操作(非接触CPU卡又称智能卡) 总结
  6. k8s修改ingress命令
  7. C/C++黑洞陷阱(Kaprekar问题)
  8. 【腾讯面经】泥腿子大学如何进击大腾讯(2014腾讯校招从笔试到拿到offer)
  9. Kubernetes--自动缩扩容
  10. python做投标生成器_生成器