code: public <T> T executeQuery(@NotNull ResultSetProcessor<T> processor, @NotNull SqlQuery query) {
          return withCurrentTransaction(query, tx -> {
              logQuery(query);
  
              try (PreparedStatement ps = tx.getConnection().prepareStatement(query.getSql())) {
                  prepareStatementFromQuery(ps, query);
  
                  long startTime = currentTimeMillis();
                  try (ResultSet resultSet = ps.executeQuery()) {
                      logQueryExecution(query, currentTimeMillis() - startTime);
                      return processor.process(resultSet);
                  }
              }
          });
      }
docs: Executes a query and processes the results with given {@link ResultSetProcessor}.
  All other findXXX-methods are just convenience methods for this one.