mybatis批量处理
时间: 2023-11-07 09:18:00 浏览: 90
mybatis 根据id批量删除的实现操作
Mybatis常会出现批量操作,如批量查询,批量插入,批量修改(replace into)。批量操作要比循环执行效率提升很多。一种常见的方法是使用foreach标签,通过在SQL语句中使用foreach标签,可以循环插入或更新多条数据。
具体用法如下:
1. 首先,需要使用SqlSessionFactory来创建一个可以执行批量操作的SqlSession。可以通过调用openSession方法,同时传入ExecutorType.BATCH参数来创建。
2. 然后,获取对应的Mapper接口,通过该接口可以访问数据库并执行批量操作。
3. 在循环中,通过调用Mapper接口的方法来插入或更新数据。
4. 最后,调用openSession的commit方法来提交批量操作,并关闭SqlSession。
以下是一个示例代码:
```java
@Test
public void testBatch() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
long start = System.currentTimeMillis();
try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
for (int i = 0; i < 1000; i++) {
mapper.addEmp(new Employee(UUID.randomUUID().toString().substring(0, 5), "b", "1"));
}
openSession.commit();
long end = System.currentTimeMillis();
System.out.println("执行时长:" + (end - start));
} finally {
openSession.close();
}
}
```
在这个示例中,使用foreach标签实现了批量插入1000条员工数据。通过循环调用Mapper接口的addEmp方法,可以将每条数据插入到数据库中。最后,通过commit方法提交批量操作,计算执行时间并打印出来。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [MyBatis执行批量操作](https://blog.csdn.net/m0_52369128/article/details/125389635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [Java企业报表管理系统源码](https://download.csdn.net/download/m0_55416028/88269629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文