mybatis插入多条数据
时间: 2023-07-05 12:31:18 浏览: 114
在使用 MyBatis 插入多条数据时,有两种常见的方式:
1. 使用 `foreach` 标签
使用 `foreach` 标签可以将多条数据一次性插入到数据库中。在 `foreach` 标签中,可以使用 `${}` 或者 `#{}` 占位符来获取集合中的数据。以下是一个示例:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into user (name, age) values
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.age})
</foreach>
</insert>
```
在 Java 代码中,你可以将多条数据封装到一个 `List` 中,然后调用 `batchInsert` 方法插入数据:
```java
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 18));
userList.add(new User("李四", 20));
userMapper.batchInsert(userList);
```
2. 使用 `insert into table select` 语句
另一种方式是使用 `insert into table select` 语句。首先,你需要创建一个临时表,然后将多条数据插入到临时表中,最后再将临时表中的数据插入到目标表中。以下是一个示例:
```xml
<insert id="batchInsert" parameterType="java.util.List">
create temporary table temp_user (name varchar(20), age int);
<foreach collection="list" item="item">
insert into temp_user (name, age) values (#{item.name}, #{item.age});
</foreach>
insert into user (name, age) select name, age from temp_user;
drop temporary table if exists temp_user;
</insert>
```
在 Java 代码中,你可以将多条数据封装到一个 `List` 中,然后调用 `batchInsert` 方法插入数据:
```java
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 18));
userList.add(new User("李四", 20));
userMapper.batchInsert(userList);
```
以上两种方式都可以批量插入多条数据,你可以根据实际情况选择合适的方式。需要注意的是,在使用 `foreach` 标签插入数据时,需要注意 SQL 注入问题,建议使用 `#{}` 占位符来获取集合中的数据。
阅读全文