批量修改、删除操作修改为批处理 废弃使用in语法
This commit is contained in:
@@ -151,12 +151,13 @@ public class SyncSlaveToMasterThread implements Runnable{
|
||||
@Override
|
||||
public boolean run() throws SQLException {
|
||||
List<Integer> updateIds = new ArrayList<Integer>();
|
||||
StringBuffer handleStr = new StringBuffer();
|
||||
List<Record> deleteRecords=new ArrayList<Record>();
|
||||
StringBuilder handleStr=new StringBuilder();
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
updateIds.add(datas.get(i).getInt("target_id"));
|
||||
if (i == 0) {
|
||||
if(i==0) {
|
||||
handleStr.append("?");
|
||||
} else {
|
||||
}else {
|
||||
handleStr.append(",?");
|
||||
}
|
||||
}
|
||||
@@ -182,22 +183,18 @@ public class SyncSlaveToMasterThread implements Runnable{
|
||||
}
|
||||
logger.info("分库同步主库修改数据任务完成");
|
||||
} else if (record.getInt("event") == 3) {
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
Record deleteRecord=new Record();
|
||||
deleteRecord.set(record.getStr("id_name"), datas.get(i).getInt("target_id"));
|
||||
//如果是针对 event_record_library 下两行数据使用 不是则仅仅赋值 无意义
|
||||
deleteRecord.set("old_id", datas.get(i).getInt("target_id"));
|
||||
deleteRecord.set("db_id", -1);
|
||||
deleteRecords.add(deleteRecord);
|
||||
}
|
||||
if(record.getStr("table_name").equals("event_record_library")) {
|
||||
updateIds.clear();
|
||||
handleStr.delete(0,handleStr.length());
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
updateIds.add(datas.get(i).getInt("target_id"));
|
||||
updateIds.add(syncDbInfo.getInt("id"));
|
||||
if (i == 0) {
|
||||
handleStr.append("(?,?)");
|
||||
} else {
|
||||
handleStr.append(",(?,?)");
|
||||
}
|
||||
}
|
||||
Db.use("masterDataSource").update("delete from event_record_library where (old_id,db_id) in ("+handleStr+")",updateIds.toArray());
|
||||
Db.use("masterDataSource").batch("delete from event_record_library where old_id=? and db_id=?","old_id,db_id",deleteRecords,record.getInt("batch_size"));
|
||||
}else {
|
||||
Db.use("masterDataSource").update("delete from " + record.getStr("table_name") + " where "+record.getStr("id_name")+" in ("
|
||||
+ handleStr + ") ", updateIds.toArray());
|
||||
Db.use("masterDataSource").batch("delete from " + record.getStr("table_name") + " where "+record.getStr("id_name")+"=?",record.getStr("id_name"),deleteRecords,record.getInt("batch_size"));
|
||||
}
|
||||
logger.info("分库同步主库删除数据任务完成");
|
||||
}
|
||||
|
||||
@@ -162,12 +162,13 @@ public class SyncThread implements Runnable {
|
||||
@Override
|
||||
public boolean run() throws SQLException {
|
||||
List<Integer> updateIds = new ArrayList<Integer>();
|
||||
StringBuffer handleStr = new StringBuffer();
|
||||
List<Record> deleteRecords=new ArrayList<Record>();
|
||||
StringBuilder handleStr=new StringBuilder();
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
updateIds.add(datas.get(i).getInt("target_id"));
|
||||
if (i == 0) {
|
||||
if(i==0) {
|
||||
handleStr.append("?");
|
||||
} else {
|
||||
}else {
|
||||
handleStr.append(",?");
|
||||
}
|
||||
}
|
||||
@@ -193,22 +194,18 @@ public class SyncThread implements Runnable {
|
||||
}
|
||||
logger.info("分库对主库修改操作的数据同步任务完成");
|
||||
} else if (record.getInt("event") == 3) {
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
Record deleteRecord=new Record();
|
||||
deleteRecord.set(record.getStr("id_name"), datas.get(i).getInt("target_id"));
|
||||
//如果是针对 event_record_library 下两行数据使用 不是则仅仅赋值 无意义
|
||||
deleteRecord.set("old_id", datas.get(i).getInt("target_id"));
|
||||
deleteRecord.set("db_id", -1);
|
||||
deleteRecords.add(deleteRecord);
|
||||
}
|
||||
if(record.getStr("table_name").equals("event_record_library")) {
|
||||
updateIds.clear();
|
||||
handleStr.delete(0,handleStr.length());
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
updateIds.add(datas.get(i).getInt("target_id"));
|
||||
updateIds.add(-1);
|
||||
if (i == 0) {
|
||||
handleStr.append("(?,?)");
|
||||
} else {
|
||||
handleStr.append(",(?,?)");
|
||||
}
|
||||
}
|
||||
Db.use(url.toString()).update("delete from event_record_library where (old_id,db_id) in ("+handleStr+")",updateIds.toArray());
|
||||
Db.use(url.toString()).batch("delete from event_record_library where old_id=? and db_id=?","old_id,db_id",deleteRecords,record.getInt("batch_size"));
|
||||
}else {
|
||||
Db.use(url.toString()).update("delete from " + record.getStr("table_name") + " where "+record.getStr("id_name")+" in ("
|
||||
+ handleStr + ") ", updateIds.toArray());
|
||||
Db.use(url.toString()).batch("delete from " + record.getStr("table_name") + " where "+record.getStr("id_name")+"=?",record.getStr("id_name"),deleteRecords,record.getInt("batch_size"));
|
||||
}
|
||||
logger.info("分库对主库删除操作的数据同步完成");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user