-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
Client.java
50 lines (42 loc) · 1.63 KB
/
Client.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package io.vertx.example.reactivex.database.sqlclient;
import io.reactivex.Maybe;
import io.reactivex.functions.Function;
import io.vertx.core.Launcher;
import io.vertx.core.json.JsonObject;
import io.vertx.reactivex.core.AbstractVerticle;
import io.vertx.reactivex.jdbcclient.JDBCPool;
import io.vertx.reactivex.sqlclient.Row;
import io.vertx.reactivex.sqlclient.RowSet;
import io.vertx.reactivex.sqlclient.SqlConnection;
/*
* @author <a href="mailto:[email protected]">Julien Viet</a>
*/
public class Client extends AbstractVerticle {
public static void main(String[] args) {
Launcher.executeCommand("run", Client.class.getName());
}
@Override
public void start() throws Exception {
JsonObject config = new JsonObject().put("url", "jdbc:hsqldb:mem:test?shutdown=true")
.put("driver_class", "org.hsqldb.jdbcDriver");
JDBCPool pool = JDBCPool.pool(vertx, config);
Maybe<RowSet<Row>> resa = pool.rxWithConnection((Function<SqlConnection, Maybe<RowSet<Row>>>) conn -> conn
.query("CREATE TABLE test(col VARCHAR(20))")
.rxExecute()
.flatMap(res -> conn.query("INSERT INTO test (col) VALUES ('val1')").rxExecute())
.flatMap(res -> conn.query("INSERT INTO test (col) VALUES ('val2')").rxExecute())
.flatMap(res -> conn.query("SELECT * FROM test").rxExecute())
.toMaybe());
// Connect to the database
resa.subscribe(rowSet -> {
// Subscribe to the final result
System.out.println("Results:");
rowSet.forEach(row -> {
System.out.println(row.toJson());
});
}, err -> {
System.out.println("Database problem");
err.printStackTrace();
});
}
}