diff --git a/nms_sync/src/com/nms/thread/SyncSlaveToMasterThread.java b/nms_sync/src/com/nms/thread/SyncSlaveToMasterThread.java index 603b76f..74b54c0 100644 --- a/nms_sync/src/com/nms/thread/SyncSlaveToMasterThread.java +++ b/nms_sync/src/com/nms/thread/SyncSlaveToMasterThread.java @@ -151,12 +151,13 @@ public class SyncSlaveToMasterThread implements Runnable{ @Override public boolean run() throws SQLException { List updateIds = new ArrayList(); - StringBuffer handleStr = new StringBuffer(); + List deleteRecords=new ArrayList(); + 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("分库同步主库删除数据任务完成"); } diff --git a/nms_sync/src/com/nms/thread/SyncThread.java b/nms_sync/src/com/nms/thread/SyncThread.java index 0141f0f..d1a535d 100644 --- a/nms_sync/src/com/nms/thread/SyncThread.java +++ b/nms_sync/src/com/nms/thread/SyncThread.java @@ -162,12 +162,13 @@ public class SyncThread implements Runnable { @Override public boolean run() throws SQLException { List updateIds = new ArrayList(); - StringBuffer handleStr = new StringBuffer(); + List deleteRecords=new ArrayList(); + 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("分库对主库删除操作的数据同步完成"); }