标签中使用${}语法时导致的问题
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
<trim prefix="where" suffixOverrides="AND | OR" prefixOverrides="AND | OR" >
<!--下面这行可以正确识别-->
u.user_name = #{userName}
<!--下面这行也可以正确识别-->
<if test="_parameter != null and _parameter != ''">
and u.user_name = #{userName}
</if>
<!--下面这行无法正确识别,按住CTRL时将鼠标指向del_flag无任何反应,双击选中时光标也会乱跳-->
<!--目前发现原因是${}语法与普通的sql语句之间除了空格和换行以外,没有任何字符时,就会出现这个bug-->
and u.del_flag = 0<!--但是只要原生sql与${}语法之间有任何字符,他就可以正确识别,即使像这样添加一个注释-->
${_parameter.dataScope('u')}
</trim>
</select>
就像上方代码中描述的问题,比如
a.id = 1
${_parameter.dataScope('u')}
这样的代码就会使 a.id = 1 这行光标异常,按住CTRL并且鼠标指向字段时无法高亮,双击这一行的任何字符都会使光标错位;
但是,如果在 a.id = 1 和 ${} 之间有任何一个非空白字符时,就可以正常的识别高亮,也不会错位,如下所示
a.id = 1
<!--test-->
${_parameter.dataScope('u')}
这个影响还挺大的,希望能尽快解决,谢谢
谢谢反馈
插件用的啥版本,我这边看没问题的
刚发现了,跳转有问题,我这边高亮没问题,我先看看跳转是啥原因
在$ 语句后面加一个$sql就好了

这个版本是我更新之后的,这个版本的问题是如果直接使用where,set,然后后面拼接${},如下代码,那么就正常。
set
update_time = sysdate()
${@com.ruoyi.common.mybatis.utils.SqlExpressionUtil@dataScopeNew()}
WHERE
id = 1
${@com.ruoyi.common.mybatis.utils.SqlExpressionUtil@dataScopeNew()}
但是如果是使用
<set>
update_time = sysdate()
${@com.ruoyi.common.mybatis.utils.SqlExpressionUtil@dataScopeNew()}
</set>
<trim prefix="WHERE" prefixOverrides="AND | OR">
id = 1
${@com.ruoyi.common.mybatis.utils.SqlExpressionUtil@dataScopeNew()}
</trim>
就如你上面所说,如果要使他正常,要么给那个语句添加$sql,或者像我上面描述的,在语句和${}之间任意塞一个非空的字符,即使他只是一个注释,就像下面的代码,我仅仅是在他们之间加了一个空注释:
<set>
update_time = sysdate()<!---->
${@com.ruoyi.common.mybatis.utils.SqlExpressionUtil@dataScopeNew()}
</set>
<trim prefix="WHERE" prefixOverrides="AND | OR">
id = 1<!---->
${@com.ruoyi.common.mybatis.utils.SqlExpressionUtil@dataScopeNew()}
</trim>
明白,现在的逻辑的 ${} 这块不加入sql解析,你这个sql看起来是没有问题的不加注释也是没有问题的,我再看看是啥原因导致的
应该已经搞定了,有问题再联系我