mybatis入参的list和表left join
时间: 2024-08-01 07:01:47 浏览: 108
MyBatis 中,当你需要对两个关联表进行左连接查询,并将其中一个表的结果集作为 list 的形式传递给 SQL 映射器,可以这样做:
1. **创建映射 XML**:首先,在 MyBatis 的 mapper XML 文件中,定义一个 select 节点,其中包含动态 SQL 部分,如 `foreach` 标签用于遍历 list:
```xml
<select id="selectWithLeftJoin" parameterType="java.util.List" resultType="com.example.YourEntity">
SELECT * FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.table1_id
<foreach item="item" index="index" collection="list" open="," separator="," close=")">
${list[index].field} as column_name
</foreach>
WHERE t1.some_condition
</select>
```
这里,`parameterType` 参数设置为 `List<YourParameter>`,`resultType` 设置为目标实体类。
2. **传递参数**:在调用这个方法时,传入一个 List 对象,每个元素代表一个查询条件,例如 Map 或自定义对象,其中可能包含与 table2 关联的字段值:
```java
List<Map<String, Object>> params = new ArrayList<>();
params.add(Map.of("table1_field", value1, "table2_field", value2)); // 添加多个元素,对应 foreach 中的索引和列名
List<YourEntity> entities = yourMapper.selectWithLeftJoin(params);
```
阅读全文