docs: private Map<String, Integer> getTargetColumnType(Connection conn, MappingConfig config) {
          DbMapping dbMapping = config.getDbMapping();
          String cacheKey = config.getDestination() + "." + dbMapping.getDatabase() + "." + dbMapping.getTable();
          Map<String, Integer> columnType = columnsTypeCache.get(cacheKey);
          if (columnType == null) {
              synchronized (RdbSyncService.class) {
                  columnType = columnsTypeCache.get(cacheKey);
                  if (columnType == null) {
                      columnType = new LinkedHashMap<>();
                      final Map<String, Integer> columnTypeTmp = columnType;
                      String sql = "SELECT * FROM " + SyncUtil.getDbTableName(dbMapping) + " WHERE 1=2";
                      Util.sqlRS(conn, sql, rs -> {
                          try {
                              ResultSetMetaData rsd = rs.getMetaData();
                              int columnCount = rsd.getColumnCount();
                              for (int i = 1; i <= columnCount; i++) {
                                  columnTypeTmp.put(rsd.getColumnName(i).toLowerCase(), rsd.getColumnType(i));
                              }
                              columnsTypeCache.put(cacheKey, columnTypeTmp);
                          } catch (SQLException e) {
                              logger.error(e.getMessage(), e);
                          }
                      });
                  }
              }
          }
          return columnType;
      }