<if test="@Ognl@isNotEmpty(type)"> AND s.type IN <foreach item="item" collection="type" open="(" separator="," close=")"> #{item} </foreach> </if> ;type是个String
时间: 2023-07-06 08:14:59 浏览: 86
如果`type`是一个字符串类型的参数,你可以将它转换成一个List类型,然后在Mybatis中使用`foreach`标签拼接多个占位符。示例代码如下:
```
<if test="@Ognl@isNotEmpty(type)">
AND s.type IN
<foreach item="item" collection="type.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
```
这里使用了`split`函数将`type`字符串按照逗号进行分隔,得到一个字符串数组。然后在`foreach`标签中遍历这个数组,拼接多个占位符。在循环内部,可以使用`#{}`占位符引用数组元素的值。
相关问题
<if test="@Ognl@isNotEmpty(type)"> AND s.type in ( #{type} ) </if>
这段代码是Mybatis的动态SQL语句中的一个条件判断语句。其中@if@标签用于判断是否满足条件,@test@属性中的表达式`@Ognl@isNotEmpty(type)`使用OGNL表达式库中的isNotEmpty函数判断type是否非空。如果type非空,就会拼接一个AND子句,查询s.type等于参数type的记录。其中#{type}是Mybatis中的占位符,表示参数值。
如果type是一个字符串类型的参数,你可以将它转换成一个List类型,然后在Mybatis中使用foreach标签拼接多个占位符。示例代码如下: 复制 <if test="@Ognl@isNotEmpty(type)"> AND s.type IN <foreach item="item" collection="type.split(',')" open="(" separator="," close=")"> #{item} </foreach> </if>;但报There is no getter for property named '__frch_item_0' in 'class org.haze.ajj.dangerWork.model.DwWarehouselManage'
这个错误通常是因为在Java类中没有定义与foreach标签中的`item`属性对应的getter方法。请检查你的Java类中是否有这个getter方法,如果没有,可以手动添加一个。示例代码如下:
```
public class DwWarehouselManage {
private String type;
//getter and setter
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String get__frch_item_0() {
return type;
}
}
```
这里手动添加了一个名为`get__frch_item_0`的方法,返回类型与`type`属性相同。这个方法名是Mybatis在拼接动态SQL语句时自动生成的,可以通过手动添加getter方法来避免这个问题。
阅读全文