Skip to content
Mirro Mutth edited this page Feb 15, 2024 · 1 revision

Simple statement

connection.createStatement("INSERT INTO `person` (`first_name`, `last_name`) VALUES ('who', 'how')") .execute(); // return a Publisher include one Result

Parametrized statement

connection.createStatement("INSERT INTO `person` (`birth`, `nickname`, `show_name`) VALUES (?, ?name, ?name)") .bind(0, LocalDateTime.of(2019, 6, 25, 12, 12, 12)) .bind("name", "Some one") // Not one-to-one binding, call twice of native index-bindings, or call once of name-bindings. .add() .bind(0, LocalDateTime.of(2009, 6, 25, 12, 12, 12)) .bind(1, "My Nickname") .bind(2, "Naming show") .returnGeneratedValues("generated_id") .execute(); // return a Publisher include two Results.
  • All parameters must be bound before execute, even parameter is null (use bindNull to bind null).
  • It will be using client-preparing by default, see useServerPrepareStatement in configuration.
  • In one-to-one binding, because native MySQL prepared statements use index-based parameters, index-bindings will have better performance than name-bindings.

Batch statement

connection.createBatch() .add("INSERT INTO `person` (`first_name`, `last_name`) VALUES ('who', 'how')") .add("UPDATE `earth` SET `count` = `count` + 1 WHERE `id` = 'human'") .execute(); // return a Publisher include two Results.

The last ; will be removed if and only if last statement contains ';', and statement has only whitespace follow the last ;.

Transactions

connection.beginTransaction() .then(Mono.from(connection.createStatement("INSERT INTO `person` (`first_name`, `last_name`) VALUES ('who', 'how')").execute())) .flatMap(Result::getRowsUpdated) .thenMany(connection.createStatement("INSERT INTO `person` (`birth`, `nickname`, `show_name`) VALUES (?, ?name, ?name)") .bind(0, LocalDateTime.of(2019, 6, 25, 12, 12, 12)) .bind("name", "Some one") .add() .bind(0, LocalDateTime.of(2009, 6, 25, 12, 12, 12)) .bind(1, "My Nickname") .bind(2, "Naming show") .returnGeneratedValues("generated_id") .execute()) .flatMap(Result::getRowsUpdated) .then(connection.commitTransaction());

Clone this wiki locally