mybatis foreach插入,包含一个string和List类型
时间: 2023-07-13 16:18:24 浏览: 93
假设你有如下的数据模型:
```java
public class User {
private String name;
private List<String> hobbies;
// getter and setter methods
}
```
你想使用 MyBatis 的 foreach 标签来插入多个 User 对象,其中每个 User 对象包含一个 name 字段和一个 hobbies 字段(List 类型)。你可以使用如下的 SQL 语句和 MyBatis 的 Mapper 映射文件来实现:
```sql
INSERT INTO user (name, hobby) VALUES
<foreach collection="users" item="user" separator=",">
#{user.name},
<foreach collection="user.hobbies" item="hobby" separator=",">
#{hobby}
</foreach>
</foreach>
```
```xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<insert id="insertUsers" parameterType="java.util.List">
INSERT INTO user (name, hobby) VALUES
<foreach collection="list" item="user" separator=",">
#{user.name},
<foreach collection="user.hobbies" item="hobby" separator=",">
#{hobby}
</foreach>
</foreach>
</insert>
</mapper>
```
其中,collection 属性表示要遍历的集合(List 类型),item 属性表示集合中的元素,separator 属性表示分隔符。在 SQL 语句中,使用了两个嵌套的 foreach 标签,第一个用来遍历多个 User 对象,第二个用来遍历每个 User 对象的 hobbies 字段。在 Mapper 映射文件中,insert 标签的 parameterType 属性设置为 java.util.List,表示传入的参数是一个 List 类型的集合,insert 标签的 id 属性设置为 insertUsers,表示这个 SQL 语句的 ID 是 insertUsers。
阅读全文