public class Jdbi extends Jdbc
DBI, Handle and SQL Objects (a.k.a DAO).
This module extends the Jdbc module so all the services provided by the Jdbc
module are inherited.
Before start, make sure you already setup a database connection as described in the Jdbc
module.
It is pretty straightforward:
{
use(new Jdbi());
get("/", req -> {
DBI dbi = req.require(DBI.class);
// ... work with dbi
});
get("/handle", req -> {
try (Handle handle = req.require(Handle.class)) {
// ... work with dbi handle
}
});
}
A call to req.require(Handle.class) is the same as:
req.require(DBI.class).open(Handle.class).
It is pretty straightforward (too):
public interface MyRepository extends Closeable {
@SqlUpdate("create table something (id int primary key, name varchar(100))")
void createSomethingTable();
@SqlUpdate("insert into something (id, name) values (:id, :name)")
void insert(@ind("id") int id, @Bind("name") String name);
@SqlQuery("select name from something where id = :id")
String findNameById(@Bind("id") int id);
}
...
{
use(new Jdbi());
get("/handle", req -> {
try (MyRepository h = req.require(MyRepository.class)) {
h.createSomethingTable();
h.insert(1, "Jooby");
String name = h.findNameById(1);
return name;
}
});
}
If you need to configure and/or customize a DBI instance, just do:
{
use(new Jdbi().doWith((dbi, config) -> {
// set custom option
}));
}
That's all folks! Enjoy it!!!
| Constructor and Description |
|---|
Jdbi(Class<?>... sqlObjects) |
Jdbi(String db,
Class<?>... sqlObjects) |
| Modifier and Type | Method and Description |
|---|---|
void |
configure(org.jooby.Env env,
com.typesafe.config.Config config,
com.google.inject.Binder binder) |
Jdbi |
doWith(BiConsumer<org.skife.jdbi.v2.DBI,com.typesafe.config.Config> configurer) |
config, dataSource, keyspublic Jdbi(Class<?>... sqlObjects)
public Jdbi doWith(BiConsumer<org.skife.jdbi.v2.DBI,com.typesafe.config.Config> configurer)
Copyright © 2015. All rights reserved.