资讯详情

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

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 b                   where 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。

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

标签: 1ew丝印三极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司