关于批量执行

最后更新:2024-04-11 10:09:45 | 状态:未完成
JDBC批量执行要求SQL命令是一样的,第行的参数可以不一样。
service的insert,update,save,excute等方法在第一个参数前加一个int batch参数表示批量执行,batch表示每批次执行多少条命令。
insert update可以调用
service.insert(100, table, set);

如果比较复杂可以自定义的SQL,参数需要提供一个二维数组,如
List<Object> lines = new ArrayList<>();
for(int i=0; i<100; i++){
    List<Object> line = new ArrayList<>();
    line.add("1"+i);
    line.add("2"+i);
    lines.add(line);
}
String sql = "insert into crm_user(code,name)values(?,?)";
service.execute(10, sql, lines);
或者#{占位},尽量不要这样,取值比较耗时
sql = "insert into crm_user(code,name)values(#{code},#{name})";
Collection<Object> list = new ArrayList<>();
for(int i=0; i<10; i++){
    DataRow row = new DataRow();
    //或User user = new User("code","name"); 这里最好用Map会更快
    row.put("CODE", "code"+i);
    row.put("NAME", "name"+i);
    list.add(row);
}
service.execute(3, sql, list);
如果要更快的话,就提前把参数封装好,要不然后续反射取值就可能影响性能了
service.execute(100, 2, "UPDATE CRM_USER SET CODE = ? WHERE ID = ?", list)
//每次执行100行,每个SQL中2个占位符,所有的值放在一维集合list中

注意批量的意思并不是生成许多条SQL一次执行。
而是生成1条SQL和多组参数提交给connection批量执行
最近更新 搜索 提交