private boolean execute(final Executor executor) { Context context = MetricsContext.start("ShardingStatement-execute"); postExecutionEvents(); final boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown(); final Map<String, Object> dataMap = ExecutorDataMap.getDataMap(); try { if (1 == statementExecutorWrappers.size()) { return executeInternal( executor, statementExecutorWrappers.iterator().next(), isExceptionThrown, dataMap); } List<Boolean> result = executorEngine.execute( statementExecutorWrappers, new ExecuteUnit<StatementExecutorWrapper, Boolean>() { @Override public Boolean execute(final StatementExecutorWrapper input) throws Exception { return executeInternal(executor, input, isExceptionThrown, dataMap); } }); return (null == result || result.isEmpty()) ? false : result.get(0); } finally { MetricsContext.stop(context); } }
/** * 执行SQL查询. * * @return 结果集列表 */ public List<ResultSet> executeQuery() { Context context = MetricsContext.start("ShardingStatement-executeQuery"); postExecutionEvents(); final boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown(); final Map<String, Object> dataMap = ExecutorDataMap.getDataMap(); List<ResultSet> result; try { if (1 == statementExecutorWrappers.size()) { return Collections.singletonList( executeQueryInternal( statementExecutorWrappers.iterator().next(), isExceptionThrown, dataMap)); } result = executorEngine.execute( statementExecutorWrappers, new ExecuteUnit<StatementExecutorWrapper, ResultSet>() { @Override public ResultSet execute(final StatementExecutorWrapper input) throws Exception { return executeQueryInternal(input, isExceptionThrown, dataMap); } }); } finally { MetricsContext.stop(context); } return result; }
private int executeUpdate(final Updater updater) { Context context = MetricsContext.start("ShardingStatement-executeUpdate"); postExecutionEvents(); final boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown(); final Map<String, Object> dataMap = ExecutorDataMap.getDataMap(); try { if (1 == statementExecutorWrappers.size()) { return executeUpdateInternal( updater, statementExecutorWrappers.iterator().next(), isExceptionThrown, dataMap); } return executorEngine.execute( statementExecutorWrappers, new ExecuteUnit<StatementExecutorWrapper, Integer>() { @Override public Integer execute(final StatementExecutorWrapper input) throws Exception { return executeUpdateInternal(updater, input, isExceptionThrown, dataMap); } }, new MergeUnit<Integer, Integer>() { @Override public Integer merge(final List<Integer> results) { if (null == results) { return 0; } int result = 0; for (int each : results) { result += each; } return result; } }); } finally { MetricsContext.stop(context); } }