orcale 通过mybatis想要批量新增百万数据
时间: 2023-06-28 19:12:54 浏览: 117
基于mybatis batch实现批量提交大量数据
如果你想要使用 MyBatis 批量新增百万数据,建议你采用以下步骤:
1. 在 MyBatis 的配置文件中,将 JDBC 批量处理开启:
```xml
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="aggressiveLazyLoading" value="false" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="useGeneratedKeys" value="false" />
<setting name="autoMappingBehavior" value="PARTIAL" />
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE" />
<setting name="defaultStatementTimeout" value="25" />
<setting name="defaultFetchSize" value="100" />
<setting name="safeRowBoundsEnabled" value="false" />
<setting name="mapUnderscoreToCamelCase" value="false" />
<setting name="localCacheScope" value="SESSION" />
<setting name="jdbcTypeForNull" value="NULL" />
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
<setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
<!-- 开启 JDBC 批量处理 -->
<setting name="defaultExecutorType" value="BATCH"/>
</settings>
```
2. 在 Mapper 接口中,定义一个批量插入的方法:
```java
public interface UserMapper {
void batchInsert(List<User> userList);
}
```
3. 在 Mapper 对应的 XML 文件中,编写批量插入语句:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into user(username, password, email) values
<foreach collection="list" item="user" index="index" separator=",">
(#{user.username}, #{user.password}, #{user.email})
</foreach>
</insert>
```
4. 在代码中,调用批量插入方法时,将数据分批插入:
```java
// 每次插入的数据量
int batchSize = 10000;
// 总数据量
int totalSize = 1000000;
// 分批插入数据
for (int i = 0; i < totalSize; i += batchSize) {
List<User> userList = new ArrayList<>();
for (int j = i; j < i + batchSize && j < totalSize; j++) {
User user = new User();
user.setUsername("user" + j);
user.setPassword("password" + j);
user.setEmail("user" + j + "@example.com");
userList.add(user);
}
userMapper.batchInsert(userList);
}
```
以上就是使用 MyBatis 批量新增百万数据的方法,希望对你有所帮助。
阅读全文