老师,我看你进入源码,我只看到了WRAPPER这个常量的值是ew字符串,可是你在@select语句中写的是ew.customSqlSegment,为啥会多出.customSqlSegment?

来源:2-3 查询中排除删除标识字段及注意事项

qq_天意_20

2019-09-14 09:14

老师,我看你进入源码,我只看到了WRAPPER这个常量的值是ew字符串,可是你在@select语句中写的是ew.customSqlSegment,为啥会多出.customSqlSegment?

写回答 关注

2回答

  • 老猿
    2019-09-14 13:56:24
    已采纳

           ew字符串所标识的参数的类型是Wrapper类,根据这个标识ew可以在xml中或者注解中取得Wrapper类型对象的相关方法或属性的值,而ew.customSqlSegment,其实是调用Wrapper抽象类的getCustomSqlSegment() 方法。该方法就是根据条件构造器组装出的相关查询条件。

    qq_天意_...

    老师,我还没看源码,我现在只是把基础和进阶看了一遍,我是不是这样理解,不直接在@select写ew取值而是写ew.customSqlSegment是为了调用customSqlSegment这个函数对ew对应传入的实参进行字符串处理,会对我在@select中的语句进行判断,然后决定是否拼接where,还是where 后的and,是这个意思把,是方便使用者的把。

    2019-09-14 19:07:28

    共 1 条回复 >

  • qq_天意_20
    2019-09-14 19:06:23

    老师,我还没看源码,我现在只是把基础和进阶看了一遍,我是不是这样理解,不直接在@select写ew取值而是写ew.customSqlSegment是为了调用customSqlSegment这个函数对ew对应传入的实参进行字符串处理,会对我在@select中的语句进行判断,然后决定是否拼接where,还是where 后的and,是这个意思把,是方便使用者的把。

    老猿

    差不多是这个意思,其实就是把条件构造器中构造的条件与你写的一部分sql组装成完整sql,getCustomSqlSegment() 的内容不仅包括where条件,还包括group by,order by等。

    2019-09-15 22:35:54

    共 1 条回复 >

MyBatis-Plus进阶

MyBatis-Plus框架进阶课程

23296 学习 · 118 问题

查看课程

相似问题