optimize code

This commit is contained in:
jianghang.loujh
2022-11-16 10:27:14 +08:00
parent 279d503cf4
commit 4c7cdbc7f3
2 changed files with 5 additions and 9 deletions

View File

@@ -91,10 +91,8 @@ public class RdbEtlService extends AbstractEtlService {
insertSql.append("INSERT INTO ") insertSql.append("INSERT INTO ")
.append(SyncUtil.getDbTableName(dbMapping, dataSource.getDbType())) .append(SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()))
.append(" ("); .append(" (");
columnsMap.forEach((targetColumnName, srcColumnName) -> insertSql.append(backtick) columnsMap
.append(targetColumnName) .forEach((targetColumnName, srcColumnName) -> insertSql.append(backtick).append(targetColumnName).append(backtick).append(","));
.append(backtick)
.append(","));
int len = insertSql.length(); int len = insertSql.length();
insertSql.delete(len - 1, len).append(") VALUES ("); insertSql.delete(len - 1, len).append(") VALUES (");
@@ -118,7 +116,7 @@ public class RdbEtlService extends AbstractEtlService {
Map<String, Object> pkVal = new LinkedHashMap<>(); Map<String, Object> pkVal = new LinkedHashMap<>();
StringBuilder deleteSql = new StringBuilder( StringBuilder deleteSql = new StringBuilder(
"DELETE FROM " + SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()) + " WHERE "); "DELETE FROM " + SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()) + " WHERE ");
appendCondition(dbMapping, deleteSql, pkVal, rs); appendCondition(dbMapping, deleteSql, pkVal, rs, backtick);
try (PreparedStatement pstmt2 = connTarget.prepareStatement(deleteSql.toString())) { try (PreparedStatement pstmt2 = connTarget.prepareStatement(deleteSql.toString())) {
int k = 1; int k = 1;
for (Object val : pkVal.values()) { for (Object val : pkVal.values()) {
@@ -136,7 +134,6 @@ public class RdbEtlService extends AbstractEtlService {
} }
Integer type = columnType.get(targetClolumnName.toLowerCase()); Integer type = columnType.get(targetClolumnName.toLowerCase());
Object value = rs.getObject(srcColumnName); Object value = rs.getObject(srcColumnName);
if (value != null) { if (value != null) {
SyncUtil.setPStmt(type, pstmt, value, i); SyncUtil.setPStmt(type, pstmt, value, i);
@@ -184,7 +181,7 @@ public class RdbEtlService extends AbstractEtlService {
* 拼接目标表主键where条件 * 拼接目标表主键where条件
*/ */
private static void appendCondition(DbMapping dbMapping, StringBuilder sql, Map<String, Object> values, private static void appendCondition(DbMapping dbMapping, StringBuilder sql, Map<String, Object> values,
ResultSet rs) throws SQLException { ResultSet rs, String backtick) throws SQLException {
// 拼接主键 // 拼接主键
for (Map.Entry<String, String> entry : dbMapping.getTargetPk().entrySet()) { for (Map.Entry<String, String> entry : dbMapping.getTargetPk().entrySet()) {
String targetColumnName = entry.getKey(); String targetColumnName = entry.getKey();
@@ -192,7 +189,7 @@ public class RdbEtlService extends AbstractEtlService {
if (srcColumnName == null) { if (srcColumnName == null) {
srcColumnName = targetColumnName; srcColumnName = targetColumnName;
} }
sql.append(targetColumnName).append("=? AND "); sql.append(backtick).append(targetColumnName).append(backtick).append("=? AND ");
values.put(targetColumnName, rs.getObject(srcColumnName)); values.put(targetColumnName, rs.getObject(srcColumnName));
} }
int len = sql.length(); int len = sql.length();

View File

@@ -281,7 +281,6 @@ public class SyncUtil {
// 只有当dbType为MySQL/MariaDB或OceanBase时返回反引号 // 只有当dbType为MySQL/MariaDB或OceanBase时返回反引号
switch (dbType) { switch (dbType) {
case mysql: case mysql:
return "`";
case mariadb: case mariadb:
case oceanbase: case oceanbase:
return "`"; return "`";