您是否需要了解关于value的长尾词?

2026-04-02 00:021阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计494个文字,预计阅读时间需要2分钟。

您是否需要了解关于value的长尾词?

原文:第一次的配置+摘要:https://www.cnblogs.com/yisshengp9927519. 第一步的配置+when(order_id=)

改写后:首次配置+链接:https://www.cnblogs.com/yissheng/p/9927519. 条件:order_id=

摘自:www.cnblogs.com/yissheng/p/9927519.html

 

第一次的配置

when (order_id=#{item}) then #{_parameter[item]}

_parameter由于我没有指定参数名,所以myBatis默认是使用这个做为参数的。

首先使用_parameter.keys可以拿到所有的key,item这里就是key的值,取key的值可以直接用#{item},获取value不能直接用#{_parameter[item]},但是最后发现这样解析不到map对象

具体可参考BaseWrapper的resolveCollection方法

protected Object resolveCollection(PropertyTokenizer prop, Object object) { if ("".equals(prop.getName())) { return object; } else { return metaObject.getValue(prop.getName()); }}

因为传了_parameter之后,它会当成属性到map中去找,所以找不到,所以我又尝试了使用#{[item]},这样是可以拿到map对象,但是里面的[item]整个被当成了key,并没有被解析,所以我又换成了下面这种方式,就是把#换成$,试验成功。

when (order_id=#{item}) then ${[item]}

为什么这两种方式差别这么大呢?这个应该是$和#的解析方式有关,那我们是不是还有其它方式解析成功呢,我又试了另外几种

可以解析成功

when (order_id=#{item}) then ${_parameter[item]}

 

您是否需要了解关于value的长尾词?

不能解析成功,这里我想主要是由于我没有使用自定义的参数,由于在外部指定了集合的名称,这种方式应该也是可以的。

when (order_id=#{item}) then #{_parameter[${item}]}

可以解析成功

when (order_id=#{item}) then #{[${item}]}

使用map.entrySet直接获取key, value

when (order_id=#{key}) then #{value}

毫无疑问使用第四种方式是最直接明了的,容易理解

前面的几种获取方式,主要问题应该是在表达式内部,myBatis把[]当成了字符串,所以用[item]也解析不了,使用#{[${item}]}之后,就可以解析成功了。

本文共计494个文字,预计阅读时间需要2分钟。

您是否需要了解关于value的长尾词?

原文:第一次的配置+摘要:https://www.cnblogs.com/yisshengp9927519. 第一步的配置+when(order_id=)

改写后:首次配置+链接:https://www.cnblogs.com/yissheng/p/9927519. 条件:order_id=

摘自:www.cnblogs.com/yissheng/p/9927519.html

 

第一次的配置

when (order_id=#{item}) then #{_parameter[item]}

_parameter由于我没有指定参数名,所以myBatis默认是使用这个做为参数的。

首先使用_parameter.keys可以拿到所有的key,item这里就是key的值,取key的值可以直接用#{item},获取value不能直接用#{_parameter[item]},但是最后发现这样解析不到map对象

具体可参考BaseWrapper的resolveCollection方法

protected Object resolveCollection(PropertyTokenizer prop, Object object) { if ("".equals(prop.getName())) { return object; } else { return metaObject.getValue(prop.getName()); }}

因为传了_parameter之后,它会当成属性到map中去找,所以找不到,所以我又尝试了使用#{[item]},这样是可以拿到map对象,但是里面的[item]整个被当成了key,并没有被解析,所以我又换成了下面这种方式,就是把#换成$,试验成功。

when (order_id=#{item}) then ${[item]}

为什么这两种方式差别这么大呢?这个应该是$和#的解析方式有关,那我们是不是还有其它方式解析成功呢,我又试了另外几种

可以解析成功

when (order_id=#{item}) then ${_parameter[item]}

 

您是否需要了解关于value的长尾词?

不能解析成功,这里我想主要是由于我没有使用自定义的参数,由于在外部指定了集合的名称,这种方式应该也是可以的。

when (order_id=#{item}) then #{_parameter[${item}]}

可以解析成功

when (order_id=#{item}) then #{[${item}]}

使用map.entrySet直接获取key, value

when (order_id=#{key}) then #{value}

毫无疑问使用第四种方式是最直接明了的,容易理解

前面的几种获取方式,主要问题应该是在表达式内部,myBatis把[]当成了字符串,所以用[item]也解析不了,使用#{[${item}]}之后,就可以解析成功了。