6
6
7
7
import benchmark .model .Fortune ;
8
8
import benchmark .model .World ;
9
- import io .r2dbc .spi .Connection ;
10
- import io .r2dbc .spi .ConnectionFactory ;
11
9
import reactor .core .publisher .Flux ;
12
10
import reactor .core .publisher .Mono ;
13
11
16
14
public class R2dbcDbRepository implements DbRepository {
17
15
18
16
private final DatabaseClient databaseClient ;
19
- private final ConnectionFactory connectionFactory ;
20
- private final ThreadLocal <Mono <? extends Connection >> conn = new ThreadLocal <>();
21
17
22
18
public R2dbcDbRepository (DatabaseClient databaseClient ) {
23
19
this .databaseClient = databaseClient ;
24
- this .connectionFactory = databaseClient .getConnectionFactory ();
25
20
}
26
21
27
22
@ Override
@@ -54,16 +49,10 @@ public Mono<World> findAndUpdateWorld(int id, int randomNumber) {
54
49
55
50
@ Override
56
51
public Flux <Fortune > fortunes () {
57
- return getConnection ()
58
- .flatMapMany (conn -> conn .createStatement ("SELECT id, message FROM " + "fortune" ).execute ())
59
- .flatMap (result -> result .map (r -> new Fortune (r .get (0 , Integer .class ), r .get (1 , String .class ))));
60
- }
61
-
62
- private Mono <? extends Connection > getConnection () {
63
- if (this .conn .get () == null ) {
64
- this .conn .set (Mono .from (connectionFactory .create ()).cache ());
65
- }
66
- return this .conn .get ();
52
+ return databaseClient
53
+ .sql ("SELECT id, message FROM fortune" )
54
+ .mapProperties (Fortune .class )
55
+ .all ();
67
56
}
68
57
69
58
}
0 commit comments