@Override public RouteUnit apply(final BatchRouteUnit input) { return input.getRouteUnit(); } }), new SQLExecutePrepareCallback() {
@Override public boolean apply(final BatchRouteUnit input) { return input.equals(each); } });
private void reviseBatchRouteUnit(final BatchRouteUnit oldBatchRouteUnit, final BatchRouteUnit newBatchRouteUnit) { oldBatchRouteUnit.getRouteUnit().getSqlUnit().getParameterSets().add(newBatchRouteUnit.getRouteUnit().getSqlUnit().getParameterSets().get(0)); oldBatchRouteUnit.mapAddBatchCount(batchCount); }
@Override public StatementExecuteUnit createStatementExecuteUnit(final Connection connection, final RouteUnit routeUnit, final ConnectionMode connectionMode) throws SQLException { return new StatementExecuteUnit(routeUnit, createPreparedStatement(connection, routeUnit.getSqlUnit().getSql()), connectionMode); } });
/** * Print SQL log for sharding rule. * * @param logicSQL logic SQL * @param sqlStatement SQL statement * @param routeUnits route units */ public static void logSQL(final String logicSQL, final SQLStatement sqlStatement, final Collection<RouteUnit> routeUnits) { log("Rule Type: sharding"); log("Logic SQL: {}", logicSQL); log("SQLStatement: {}", sqlStatement); for (RouteUnit each : routeUnits) { if (each.getSqlUnit().getParameterSets().get(0).isEmpty()) { log("Actual SQL: {} ::: {}", each.getDataSourceName(), each.getSqlUnit().getSql()); } else { log("Actual SQL: {} ::: {} ::: {}", each.getDataSourceName(), each.getSqlUnit().getSql(), each.getSqlUnit().getParameterSets()); } } }
@Override public List<Object> apply(final StatementExecuteUnit input) { return input.getRouteUnit().getSqlUnit().getParameterSets().get(0); } }));
private Optional<GeneratedKey> getGeneratedKey() { if (null != routeResult && routeResult.getSqlStatement() instanceof InsertStatement) { return Optional.fromNullable(routeResult.getGeneratedKey()); } return Optional.absent(); } }
private List<Object> getRoutedParameters(final SQLUnit sqlUnit) { List<Object> result = new LinkedList<>(); for (List<Object> each : sqlUnit.getParameterSets()) { result.addAll(each); } return result; } }
private void setGeneratedKeys(final SQLRouteResult sqlRouteResult, final GeneratedKey generatedKey) { generatedKeys.addAll(generatedKey.getGeneratedKeys()); sqlRouteResult.getGeneratedKey().getGeneratedKeys().clear(); sqlRouteResult.getGeneratedKey().getGeneratedKeys().addAll(generatedKeys); }
/** * Add batch for route units. * * @param routeResult route result */ public void addBatchForRouteUnits(final SQLRouteResult routeResult) { handleOldRouteUnits(createBatchRouteUnits(routeResult.getRouteUnits())); handleNewRouteUnits(createBatchRouteUnits(routeResult.getRouteUnits())); batchCount++; }
/** * Initialize executor. * * @param routeResult route result * @throws SQLException SQL exception */ public void init(final SQLRouteResult routeResult) throws SQLException { setSqlStatement(routeResult.getSqlStatement()); getExecuteGroups().addAll(obtainExecuteGroups(routeUnits)); }
private void handleNewRouteUnits(final Collection<BatchRouteUnit> newRouteUnits) { newRouteUnits.removeAll(routeUnits); for (BatchRouteUnit each : newRouteUnits) { each.mapAddBatchCount(batchCount); } routeUnits.addAll(newRouteUnits); }
@Override public StatementExecuteUnit createStatementExecuteUnit(final Connection connection, final RouteUnit routeUnit, final ConnectionMode connectionMode) throws SQLException { return new StatementExecuteUnit(routeUnit, createPreparedStatement(connection, routeUnit.getSqlUnit().getSql()), connectionMode); } });
private Optional<GeneratedKey> getGeneratedKey() { if (null != routeResult && routeResult.getSqlStatement() instanceof InsertStatement) { return Optional.fromNullable(routeResult.getGeneratedKey()); } return Optional.absent(); }
@Override public ExecuteResponseUnit executeSQL(final StatementExecuteUnit statementExecuteUnit) throws SQLException { return executeWithoutMetadata( statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql(), statementExecuteUnit.getConnectionMode(), isReturnGeneratedKeys); } }
@Override public ExecuteResponseUnit executeSQL(final StatementExecuteUnit statementExecuteUnit) throws SQLException { return executeWithoutMetadata( statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql(), statementExecuteUnit.getConnectionMode(), isReturnGeneratedKeys); } }
@Override public ExecuteResponseUnit executeSQL(final StatementExecuteUnit statementExecuteUnit) throws SQLException { if (hasMetaData) { return executeWithoutMetadata( statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql(), statementExecuteUnit.getConnectionMode(), isReturnGeneratedKeys); } else { hasMetaData = true; return executeWithMetadata( statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql(), statementExecuteUnit.getConnectionMode(), isReturnGeneratedKeys); } } }
@Override public ExecuteResponseUnit executeSQL(final StatementExecuteUnit statementExecuteUnit) throws SQLException { if (hasMetaData) { return executeWithoutMetadata( statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql(), statementExecuteUnit.getConnectionMode(), isReturnGeneratedKeys); } else { hasMetaData = true; return executeWithMetadata( statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql(), statementExecuteUnit.getConnectionMode(), isReturnGeneratedKeys); } } }
@Override protected Integer executeSQL(final StatementExecuteUnit statementExecuteUnit) throws SQLException { return updater.executeUpdate(statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql()); } };
@Override protected Boolean executeSQL(final StatementExecuteUnit statementExecuteUnit) throws SQLException { return executor.execute(statementExecuteUnit.getStatement(), statementExecuteUnit.getRouteUnit().getSqlUnit().getSql()); } };