前言
DBUtils亦可使用batch累積欲寫入資料,再一次性的寫入DB內,以節省連線資源,不過若要使用batch方法,得先將參數封裝成二維陣列物件,之後再一次性進行傳入,所以在寫入資料前得進行一些處理動作。
實作
Java程式碼
DBUtilsInsertDataByBatchDemo.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| package cc.artyang;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import cc.artyang.conf.DataSourceConf;
/**
* DBUtils 批次新增資料範例
*
* @author Art Yang
*
*/
public class DBUtilsInsertDataByBatchDemo {
/**
* 主程式方法
*
* @param args 外部參數
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws SQLException, ClassNotFoundException {
String sqlStmt = "insert into blog(blogName, author, remark, createdTime) values( ?, ?, ?, now())";
Object[][] dataList = getDataSet();
QueryRunner queryRunner = new QueryRunner(DataSourceConf.getDataSource());
int[] insertResult = queryRunner.batch(sqlStmt, dataList);
for (int i = 0; i < insertResult.length; i++) {
System.out.printf(insertResult[i] > 0 ? "第 %d 筆資料新增成功%n" : "第 %d 筆資料新增失敗%n", i + 1);
}
}
/**
* 欲新增資料之資料集
*
* @return 回傳育新增資料之資料集
*/
private static Object[][] getDataSet() {
Object[][] dataSet = new Object[10][];
for (int i = 0; i < dataSet.length; i++) {
dataSet[i] = new Object[] { "楊藝的洋溢生活_" + i, "ArtYang_" + i, "生活記事、系統管理、程式設計、資料庫_" + i };
}
return dataSet;
}
}
|
執行結果
1
2
3
4
5
6
7
8
9
10
| 第 1 筆資料新增成功
第 2 筆資料新增成功
第 3 筆資料新增成功
第 4 筆資料新增成功
第 5 筆資料新增成功
第 6 筆資料新增成功
第 7 筆資料新增成功
第 8 筆資料新增成功
第 9 筆資料新增成功
第 10 筆資料新增成功
|