mybatis里面使用foreach如何用两个字段查询
时间: 2024-09-25 11:08:35 浏览: 43
在MyBatis中,如果你想要通过`foreach`循环同时根据两个字段(例如`field1`和`field2`)进行查询,你可以在`<foreach>`标签内添加两个属性,分别代表这两个字段,然后在SQL模板里使用它们。假设你的`List<Map<String, Object>>`包含`field1`和`field2`对应的值,你可以这样做:
**Mapper接口(KingdeeBomViewMapper.java):**
```java
import java.util.List;
import org.apache.ibatis.annotations.*;
public interface KingdeeBomViewMapper {
@Select("SELECT * FROM kingdee_bom_view WHERE field1 IN ("
+ "<foreach item='item' index='index' collection='list' open='(' separator=',' close=')'>#{item.field1}, "
+ "</foreach>"
+ ") AND field2 IN ("
+ "<foreach item='item' index='index' collection='list' open='(' separator=',' close=')'>#{item.field2}, "
+ "</foreach>"
+ ")")
List<Map<String, Object>> selectDataByTwoFields(List<Map<String, Object>> list);
}
```
在这个例子中,`list`参数是一个`List<Map<String, Object>>`,其中`item.field1`和`item.field2`分别代表`field1`和`field2`的值。`<foreach>`标签内的`open`, `separator`, 和 `close`属性用于构建嵌套的括号表达式。
**注意**: 这种写法假设`field1`和`field2`都是字符串类型,如果是其他类型(如整数、日期等),需要相应地处理SQL绑定。
阅读全文