关于批量执行
最后更新:2024-09-04 05:30:01
|
状态:未完成
JDBC批量执行要求SQL命令是一样的,每行的参数值可以不一样,命令根据第一行生成
service的insert,update,save,excute等方法在第一个参数前加一个int batch参数表示批量执行,batch表示每批次执行多少条命令。
如insert可以调用
service.insert(100, table, set);
到这就可以了,如果有性能要求再继续往下
--------------------------------------------------------------------------------------
如果比较复杂可以自定义的SQL,参数需要提供一个二维数组,如
注意批量的意思并不是生成许多条SQL一次执行。
而是生成1条SQL和多组参数提交给connection批量执行
有些驱动需要开启批量执行参数 如mysql需要&allowMultiQueries=true
JDBC的批量不一定比手工批量快需要在实际环境中测试一下
手工批量的意思是把集合拆分成多份如DataSet.split() 或.page()
再遍历执行insert
或者往集合添加条目到一定数据一次性insert
手工批量一般需要把大部分日志关掉
ConfigStore configs = new DefaultConfigStore();
configs.IS_LOG_SQL(false).IS_LOG_SQL_PARAM(false);
service.insert(table, set, configs)
service的insert,update,save,excute等方法在第一个参数前加一个int batch参数表示批量执行,batch表示每批次执行多少条命令。
如insert可以调用
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批量执行
有些驱动需要开启批量执行参数 如mysql需要&allowMultiQueries=true
JDBC的批量不一定比手工批量快需要在实际环境中测试一下
手工批量的意思是把集合拆分成多份如DataSet.split() 或.page()
再遍历执行insert
或者往集合添加条目到一定数据一次性insert
手工批量一般需要把大部分日志关掉
ConfigStore configs = new DefaultConfigStore();
configs.IS_LOG_SQL(false).IS_LOG_SQL_PARAM(false);
service.insert(table, set, configs)