java 批量插入sql xml写法
时间: 2023-10-03 16:09:29 浏览: 166
在 Java 中,可以使用 MyBatis 或者 JDBC 来批量插入 SQL 数据。下面是两种常见的方式:
1. MyBatis XML 写法
在 MyBatis 的 XML 映射文件中定义批量插入的 SQL 语句,例如:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into table_name (column1, column2, ...) values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.column1}, #{item.column2}, ...)
</foreach>
</insert>
```
其中,`list` 是传入的数据列表,`item` 表示每个数据项,`index` 表示索引。
在 Java 代码中,可以通过 MyBatis 的 `SqlSession` 来执行批量插入操作,例如:
```java
List<Data> dataList = ...; // 待插入的数据列表
try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
DataMapper dataMapper = sqlSession.getMapper(DataMapper.class);
for (Data data : dataList) {
dataMapper.insert(data);
}
sqlSession.flushStatements();
sqlSession.commit();
}
```
这里使用了 MyBatis 的 `ExecutorType.BATCH` 执行器类型,可以在内部使用 JDBC 的批量操作,提高插入效率。
2. JDBC XML 写法
在 JDBC 的 XML 配置文件中定义批量插入的 SQL 语句,例如:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into table_name (column1, column2, ...) values (?, ?, ...)
</insert>
```
在 Java 代码中,可以通过 JDBC 的 `PreparedStatement` 来执行批量插入操作,例如:
```java
List<Data> dataList = ...; // 待插入的数据列表
try (Connection conn = dataSource.getConnection()) {
PreparedStatement pstmt = conn.prepareStatement(sql);
for (Data data : dataList) {
pstmt.setString(1, data.getColumn1());
pstmt.setString(2, data.getColumn2());
// ...
pstmt.addBatch();
}
pstmt.executeBatch();
conn.commit();
}
```
这里使用了 `PreparedStatement` 的 `addBatch()` 方法和 `executeBatch()` 方法,可以批量插入数据。
阅读全文