gpt4 book ai didi

java - iBATIS 2.3.x 是否支持 foreach 标签?

转载 作者:行者123 更新时间:2023-11-30 06:33:28 24 4
gpt4 key购买 nike

我有一个使用 iBATIS 2.3.x 的个人网站。最近我要给网站添加一个复杂的搜索功能,需要通过对象列表来查询数据,比如:

public Class PromotionAttribute {
String attributeName;
String attributeValue;
}

查询看起来像:

select p.* from promotions p
join promotion_attributes pa on p.id=pa.id
where
<foreach item="PromotionAttribute" index="index" collection="list" open="(" separator=" or " close=")">
pa.attribute_name=#{attributeName} and pa.attribute_value=#{attributeValue}#
</foreach>

对于上面的查询,由于我没有使用高版本的iBATIS,所以它只是一个伪代码,它的意思是我想生成一个动态的查询条件。

我的问题是:不知道iBATIS 2.3.x是否支持"foreach"标签,如果不支持,如何实现这种查询?

谢谢,水清

最佳答案

您可以在 2.3.* 中使用 "iterate" 代替 foreach,如下所示。只有 iBATIS 3/MyBATIS 使用基于 OGNL 的表达式,如 choose、foreach、trim...

in Java,

Map paramMap = new HashMap();
paramMap.put("productTypes", productTypes);
sqlMapClient.queryForList("getProducts", paramMap);
in xml,

<select id="getProducts" parameterClass="java.util.Map"
resultClass="Product">
SELECT * FROM Products
<dynamic prepend="WHERE productType IN ">
<iterate property="productTypes"
open="(" close=")"
conjunction=",">
productType=#productType#
</iterate>
</dynamic>
</select>

您可以将参数类用作“java.util.Map”并通过将“productTypes”设置为键来传递列表值。

关于java - iBATIS 2.3.x 是否支持 foreach 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7859338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com