Using connections

When you need to execute sequential queries (without a transaction), you can create a new connection or borrow one from the pool:

Code not translatable

Prepared queries can be created:

connection.prepare("SELECT * FROM users WHERE first_name LIKE ?", { ar1 ->
  if (ar1.succeeded()) {
    var pq = ar1.result()
    pq.execute(Tuple.of("julien"), { ar2 ->
      if (ar2.succeeded()) {
        // All rows
        var rows = ar2.result()
      }
    })
  }
})
Note
prepared query caching depends on the setCachePreparedStatements and does not depend on whether you are creating prepared queries or use direct prepared queries

PreparedQuery can perform efficient batching:

connection.prepare("INSERT INTO USERS (id, name) VALUES (?, ?)", { ar1 ->
  if (ar1.succeeded()) {
    var prepared = ar1.result()

    // Create a query : bind parameters
    var batch = mutableListOf<Any?>()

    // Add commands to the createBatch
    batch.add(Tuple.of("julien", "Julien Viet"))
    batch.add(Tuple.of("emad", "Emad Alblueshi"))

    prepared.batch(batch, { res ->
      if (res.succeeded()) {

        // Process rows
        var rows = res.result()
      } else {
        println("Batch failed ${res.cause()}")
      }
    })
  }
})