package org.jooby.jdbi; import java.io.Closeable; import org.jooby.test.ServerFeature; import org.junit.Test; import org.skife.jdbi.v2.sqlobject.Bind; import org.skife.jdbi.v2.sqlobject.SqlQuery; import org.skife.jdbi.v2.sqlobject.SqlUpdate; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigValueFactory; public class JdbiSqlObjectFeature extends ServerFeature { 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(@Bind("id") int id, @Bind("name") String name); @SqlQuery("select name from something where id = :id") String findNameById(@Bind("id") int id); } { use(ConfigFactory.empty().withValue("db", ConfigValueFactory.fromAnyRef("mem"))); use(new Jdbi(MyRepository.class)); get("/jdbi-handle", req -> { try (MyRepository h = req.require(MyRepository.class)) { h.createSomethingTable(); h.insert(1, "Jooby"); String name = h.findNameById(1); return name; } }); } @Test public void doWithSqlObject() throws Exception { request() .get("/jdbi-handle") .expect("Jooby"); } }