mybatist同时向数据库插入多条数据
时间: 2024-01-09 21:52:20 浏览: 90
您可以使用MyBatis提供的批量插入功能来同时向数据库插入多条数据。可以使用以下步骤实现:
1. 在Mapper XML文件中编写插入语句,使用foreach标签遍历多个参数。
2. 在MyBatis配置文件中设置批量插入的参数。
3. 使用SqlSession的batch方法执行插入操作。
以下是一个示例代码:
Mapper XML文件中的代码:
```xml
<insert id="insertBatch" parameterType="java.util.List">
insert into user (name, age) values
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.age})
</foreach>
</insert>
```
MyBatis配置文件中的参数设置:
```xml
<settings>
<setting name="jdbc.batch_size" value="100"/>
</settings>
```
Java代码中的调用方法:
```java
List<User> userList = new ArrayList<>();
// 添加多个User对象到userList中
SqlSession sqlSession = sqlSessionFactory.openSqlSession();
try {
int batchSize = 100; // 批量大小
for (int i = 0; i < userList.size(); i += batchSize) {
List<User> batchList = userList.subList(i, Math.min(i + batchSize, userList.size()));
sqlSession.insert("insertBatch", batchList);
}
sqlSession.commit();
} catch (Exception e) {
sqlSession.rollback();
} finally {
sqlSession.close();
}
```
在这个示例中,我们将User对象批量插入到数据库中。注意,为了避免一次性插入过多数据导致内存溢出,我们使用分批的方式进行插入。另外,我们在MyBatis配置文件中设置了jdbc.batch_size参数,表示每次向数据库提交的记录数。这样可以提高插入效率。
阅读全文