锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-11-09 22:30:01 1ew丝印三极管

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复杂情况 * 

使用方法

*

`自定义sql` ${ew.customSqlSegment}

*

1.逻辑删除需要自己拼接条件 (以前自定义也是如此)

*

2.不支持wrapper附带实体的情况 (wrapper自带实体会更麻烦)

*

3.用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!)

*

4.ew是wrapper定义别名可以自行替换

*/
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。

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

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

相关文章