mybatis在持久层多个实体类传参
时间: 2024-10-04 11:03:49 浏览: 36
MyBatis是一个流行的持久层框架,它允许在SQL查询中动态地传入多个实体类作为参数。当你需要对数据库执行涉及多个对象的操作时,比如批量插入或更新,可以使用MyBatis的`<foreach>`标签配合`map`或`list`数据结构。
例如,假设你有两个实体类`User`和`Address`,你可以这样做:
```xml
<select id="insertUsersAndAddresses" parameterType="java.util.Map">
INSERT INTO users (name) VALUES #{item.user.name}
<foreach item="address" index="index" collection="addresses" open="," separator=","
close=";">
INSERT INTO addresses (user_id, email) VALUES (${index + 1}, #{address.email})
</foreach>
</select>
Map<String, Object> params = new HashMap<>();
List<User> userList = ...;
List<Address> addressList = ...;
params.put("users", userList);
params.put("addresses", addressList);
sqlSession.insert("insertUsersAndAddresses", params);
```
在这个例子中,`parameterType`设为`Map`,然后通过`items`遍历用户列表并插入到第一个SQL语句中,`addresses`列表则插入到`foreach`循环中生成的每个具体的SQL子句。
阅读全文