in cloud-spanner-r2dbc-samples/cloud-spanner-r2dbc-sample/src/main/java/com/example/BookExampleApp.java [84:114]
public void saveBooks() {
Statement statement = this.connection.createStatement(
"INSERT BOOKS "
+ "(ID, TITLE)"
+ " VALUES "
+ "(@id, @title)")
.bind("id", "book1")
.bind("title", "Book One")
.add()
.bind("id", "book2")
.bind("title", "Book Two");
Statement statement2 = this.connection.createStatement(
"INSERT BOOKS "
+ "(ID, TITLE, EXTRADETAILS)"
+ " VALUES "
+ "(@id, @title, @extradetails)")
.bind("id", "book3")
.bind("title", "Book Three")
.bind("extradetails", new JsonWrapper("{\"rating\":9,\"series\":true}"));
Flux.concat(
this.connection.beginTransaction(),
Flux.concat(statement.execute(), statement2.execute())
.flatMapSequential(r -> Mono.from(r.getRowsUpdated()))
.then(),
this.connection.commitTransaction())
.doOnComplete(() -> System.out.println("Insert books transaction committed."))
.blockLast();
}