MyBatis提供了多种方式来实现批量插入操作,以下介绍两种常用的方式:
1. 使用foreach循环实现批量插入:通过在SQL语句中使用foreach循环,可以将多个对象一次性插入到数据库中。示例:
```xml
<!-- Mapper XML配置文件中的SQL语句 -->
<insert id="batchInsertUsers" parameterType="java.util.List">
INSERT INTO user (username, age) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.username}, #{item.age})
</foreach>
</insert>
```
在上述示例中,方法`batchInsertUsers`接受一个`java.util.List`类型的参数,通过foreach循环将List中的对象批量插入到数据库中。
在Java代码中调用批量插入方法:
```java
List<User> userList = new ArrayList<>();
// 添加多个User对象到List中
userMapper.batchInsertUsers(userList);
```
注意要确保数据库支持批量插入操作,如MySQL等数据库通常支持批量插入。
2. 使用MyBatis的内置批量插入方式:MyBatis提供了`SqlSession`的`insert`方法重载,允许一次性插入多个对象,减少与数据库的交互次数。示例:
```java
List<User> userList = new ArrayList<>();
// 添加多个User对象到List中
sqlSession.insert("com.example.UserMapper.batchInsertUsers", userList);
sqlSession.commit();
```
在上述示例中,我们使用`SqlSession`的`insert`方法插入多个对象,`"com.example.UserMapper.batchInsertUsers"`表示Mapper接口中的方法名,`userList`是要插入的对象列表。
需要注意使用该方式时,要手动提交事务,以确保数据的插入操作生效。
无论使用哪种方式,批量插入操作都可以提高数据库性能,减少与数据库的交互次数,从而提高数据插入效率。根据实际应用场景选择合适的批量插入方式即可。