This commit is contained in:
default
2018-10-24 18:53:05 +08:00
parent 0efdb80e5c
commit 2143739966
2 changed files with 18 additions and 15 deletions

View File

@@ -61,15 +61,18 @@ public class SyncSlaveToMasterThread implements Runnable{
final List<Record> data = Db.use(url.toString())
.find("select "+columns.toString()+" from " + record.getStr("table_name") + " where "
+ record.getStr("id_name") + " > ? order by "+record.getStr("id_name")+" asc limit " + record.getInt("batch_size"),
record.getInt("last_id"));
record.getLong("last_id"));
//logger.info("分库同步到主库新增数据信息为"+JSON.toJSONString(data));
if (data != null && data.size() > 0) {
final Object lastInsertId = data.get(data.size() - 1).get(record.getStr("id_name"));
StringBuffer ssss=new StringBuffer();
if(record.getInt("mode").equals(2)) {
for(Record entity:data) {
ssss.append(entity.get("ID")+",");
entity.remove(record.getStr("id_name"));
}
}
System.out.println(ssss.toString());
// 针对监测结果表的id值 自动生成处理
if("detection_info_new".equals(record.getStr("table_name"))) {
Db.use(url.toString()).tx(new IAtom() {
@@ -152,10 +155,10 @@ public class SyncSlaveToMasterThread implements Runnable{
return Db.use("masterDataSource").tx(new IAtom() {
@Override
public boolean run() throws SQLException {
List<Integer> insertIds = new ArrayList<Integer>();
List<Long> insertIds = new ArrayList<Long>();
StringBuffer insertStr = new StringBuffer();
for (int i = 0; i < data.size(); i++) {
insertIds.add(data.get(i).getInt("target_id"));
insertIds.add(data.get(i).getLong("target_id"));
if (i == 0) {
insertStr.append("?");
} else {
@@ -173,7 +176,7 @@ public class SyncSlaveToMasterThread implements Runnable{
insertData.set("sync_status",1);
//设置同步数据所在数据库的id以及所在原来表的id 用于修改和删除 -1为中心或主库
insertData.set("old_id",insertData.getLong(record.getStr("id_name")));
insertData.set("db_id", syncDbInfo.getInt("id"));
insertData.set("db_id", syncDbInfo.getLong("id"));
}
insertData.set(record.getStr("id_name"), seqData.getLong("seqId"));
}
@@ -200,7 +203,7 @@ public class SyncSlaveToMasterThread implements Runnable{
while (flag) {
final List<Record> datas = Db.use(url.toString()).find(
" select * from table_event_log where table_name = '" + record.getStr("table_name")
+ "' and id > " + record.getInt("last_id") + " and event = "
+ "' and id > " + record.getLong("last_id") + " and event = "
+ record.getInt("event") + " order by id asc limit " + record.getInt("batch_size"));
//logger.info("分库同步到主库数据的修改或者删除数据信息为"+JSON.toJSONString(datas));
if (datas != null && datas.size() > 0) {
@@ -210,11 +213,11 @@ public class SyncSlaveToMasterThread implements Runnable{
return Db.use("masterDataSource").tx(new IAtom() {
@Override
public boolean run() throws SQLException {
List<Integer> updateIds = new ArrayList<Integer>();
List<Long> updateIds = new ArrayList<Long>();
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"));
updateIds.add(datas.get(i).getLong("target_id"));
if(i==0) {
handleStr.append("?");
}else {
@@ -252,9 +255,9 @@ public class SyncSlaveToMasterThread implements Runnable{
} 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"));
deleteRecord.set(record.getStr("id_name"), datas.get(i).getLong("target_id"));
//如果是针对 event_record_library 下两行数据使用 不是则仅仅赋值 无意义
deleteRecord.set("old_id", datas.get(i).getInt("target_id"));
deleteRecord.set("old_id", datas.get(i).getLong("target_id"));
deleteRecord.set("db_id", syncDbInfo.get("id"));
deleteRecords.add(deleteRecord);
}

View File

@@ -114,10 +114,10 @@ public class SyncThread implements Runnable {
return Db.use(url.toString()).tx(new IAtom() {
@Override
public boolean run() throws SQLException {
List<Integer> insertIds = new ArrayList<Integer>();
List<Long> insertIds = new ArrayList<Long>();
StringBuffer insertStr = new StringBuffer();
for (int i = 0; i < data.size(); i++) {
insertIds.add(data.get(i).getInt("target_id"));
insertIds.add(data.get(i).getLong("target_id"));
if (i == 0) {
insertStr.append("?");
} else {
@@ -174,11 +174,11 @@ public class SyncThread implements Runnable {
return Db.use(url.toString()).tx(new IAtom() {
@Override
public boolean run() throws SQLException {
List<Integer> updateIds = new ArrayList<Integer>();
List<Long> updateIds = new ArrayList<Long>();
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"));
updateIds.add(datas.get(i).getLong("target_id"));
if(i==0) {
handleStr.append("?");
}else {
@@ -210,9 +210,9 @@ public class SyncThread implements Runnable {
} 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"));
deleteRecord.set(record.getStr("id_name"), datas.get(i).getLong("target_id"));
//如果是针对 event_record_library 下两行数据使用 不是则仅仅赋值 无意义
deleteRecord.set("old_id", datas.get(i).getInt("target_id"));
deleteRecord.set("old_id", datas.get(i).getLong("target_id"));
deleteRecord.set("db_id", -1);
deleteRecords.add(deleteRecord);
}