From ac756d0149434209d6e3e54f4e28b92fced6e91b Mon Sep 17 00:00:00 2001 From: default Date: Tue, 9 Oct 2018 14:45:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E6=89=B9=E5=A4=84=E7=90=86=20=E5=BA=9F=E5=BC=83=E4=BD=BF?= =?UTF-8?q?=E7=94=A8in=E8=AF=AD=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nms/thread/SyncSlaveToMasterThread.java | 31 +++++++++---------- nms_sync/src/com/nms/thread/SyncThread.java | 31 +++++++++---------- 2 files changed, 28 insertions(+), 34 deletions(-) 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("分库对主库删除操作的数据同步完成"); }