QueriesSqlHandler.java 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package hello;
  2. import static hello.Helper.getQueries;
  3. import static hello.Helper.randomWorldNumber;
  4. import static hello.Helper.sendJson;
  5. import io.undertow.server.HttpHandler;
  6. import io.undertow.server.HttpServerExchange;
  7. import java.sql.Connection;
  8. import java.sql.PreparedStatement;
  9. import java.sql.ResultSet;
  10. import java.util.Objects;
  11. import javax.sql.DataSource;
  12. /**
  13. * Handles the multi-query database test using a SQL database.
  14. */
  15. final class QueriesSqlHandler implements HttpHandler {
  16. private final DataSource db;
  17. QueriesSqlHandler(DataSource db) {
  18. this.db = Objects.requireNonNull(db);
  19. }
  20. @Override
  21. public void handleRequest(HttpServerExchange exchange) throws Exception {
  22. int queries = getQueries(exchange);
  23. World[] worlds = new World[queries];
  24. try (Connection connection = db.getConnection();
  25. PreparedStatement statement =
  26. connection.prepareStatement("SELECT * FROM World WHERE id = ?")) {
  27. for (int i = 0; i < worlds.length; i++) {
  28. statement.setInt(1, randomWorldNumber());
  29. try (ResultSet resultSet = statement.executeQuery()) {
  30. resultSet.next();
  31. int id = resultSet.getInt("id");
  32. int randomNumber = resultSet.getInt("randomNumber");
  33. worlds[i] = new World(id, randomNumber);
  34. }
  35. }
  36. }
  37. sendJson(exchange, worlds);
  38. }
  39. }