Optional<BigDecimal> executeQueryForOptionalBigDecimal(Select select) { return executeQueryForOptionalValue(select, resultSet -> resultSet.getBigDecimal(1)); }
long executeQueryForLong(Select select) { return executeQueryForValue(select, resultSet -> resultSet.getLong(1)); }
public void logStats() { logger.trace("SQL session '" + sessionName + "' finished. {} statement(s) executed in {} millis.", statementExecutors.values().stream().mapToInt(i -> i.getExecutionCount()).sum(), statementExecutors.values().stream().mapToLong(i -> i.getExecutionTotalMillis()).sum()); List<PreparedStatementExecutor> executors = new ArrayList<>(statementExecutors.values()); Collections.sort(executors, (e1, e2) -> e2.getExecutionTotalMillis() > e1.getExecutionTotalMillis() ? 1 : -1); //executors.forEach(e -> logger.debug("* "+e.printStats())); }
@Override public void close() { statementExecutors.values().stream().forEach(p -> p.close()); logStats(); }
private PreparedStatementExecutor getOrCreatePreparedStatement(Query query) { if (statementExecutors.containsKey(query.name())) { return statementExecutors.get(query.name()); } PreparedStatementExecutor executor = new PreparedStatementExecutor(connectionProvider, query); statementExecutors.put(query.name(), executor); return executor; }
long executeQueryForLong(Select select) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQueryForLong(select); }
Optional<BigDecimal> executeQueryForOptionalBigDecimal(Select select) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQueryForOptionalBigDecimal(select); }
Optional<Long> executeQueryForOptionalLong(Select select) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQueryForOptionalLong(select); }
<T> List<T> executeQuery(Select select, ObjectMapper<T> objectMapper) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQuery(select, objectMapper); }
private void execute(Insert insertQuery) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(insertQuery); executor.execute(insertQuery); }
@Override public void close() { statementExecutors.values().stream().forEach(p -> p.close()); logStats(); }
private PreparedStatementExecutor getOrCreatePreparedStatement(Query query) { if (statementExecutors.containsKey(query.name())) { return statementExecutors.get(query.name()); } PreparedStatementExecutor executor = new PreparedStatementExecutor(connectionProvider, query); statementExecutors.put(query.name(), executor); return executor; }
long executeQueryForLong(Select select) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQueryForLong(select); }
Optional<BigDecimal> executeQueryForOptionalBigDecimal(Select select) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQueryForOptionalBigDecimal(select); }
Optional<Long> executeQueryForOptionalLong(Select select) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQueryForOptionalLong(select); }
<T> List<T> executeQuery(Select select, ObjectMapper<T> objectMapper) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(select); return executor.executeQuery(select, objectMapper); }
private void execute(Insert insertQuery) { PreparedStatementExecutor executor = getOrCreatePreparedStatement(insertQuery); executor.execute(insertQuery); }
public void logStats() { logger.trace("SQL session '" + sessionName + "' finished. {} statement(s) executed in {} millis.", statementExecutors.values().stream().mapToInt(i -> i.getExecutionCount()).sum(), statementExecutors.values().stream().mapToLong(i -> i.getExecutionTotalMillis()).sum()); List<PreparedStatementExecutor> executors = new ArrayList<>(statementExecutors.values()); Collections.sort(executors, (e1, e2) -> e2.getExecutionTotalMillis() > e1.getExecutionTotalMillis() ? 1 : -1); //executors.forEach(e -> logger.debug("* "+e.printStats())); }
Optional<Long> executeQueryForOptionalLong(Select select) { return executeQueryForOptionalValue(select, resultSet -> resultSet.getLong(1)); }
long executeQueryForLong(Select select) { return executeQueryForValue(select, resultSet -> resultSet.getLong(1)); }