package org.jooby.jdbi;
import java.util.List;
import org.jooby.test.ServerFeature;
import org.junit.Test;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.util.StringColumnMapper;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValueFactory;
public class JdbiInClauseFeature extends ServerFeature {
{
use(ConfigFactory.empty()
.withValue("db", ConfigValueFactory.fromAnyRef("mem")));
use(new Jdbi());
get("/named", req -> {
try (Handle h = req.require(Handle.class)) {
h.execute("create table members (id int primary key, name varchar(100))");
h.execute("insert into members (id, name) values (?, ?)", 1, "Jooby");
h.execute("insert into members (id, name) values (?, ?)", 2, "Rock");
List<String> name = h.createQuery("select name from members where id in (:id)")
.bind("id", req.param("id").toList(Integer.class))
.map(StringColumnMapper.INSTANCE)
.list();
return name;
}
});
get("/pos", req -> {
try (Handle h = req.require(Handle.class)) {
List<String> name = h.createQuery("select name from members where id in (?)")
.bind(0, req.param("id").toList(Integer.class).toArray(new Integer[0]))
.map(StringColumnMapper.INSTANCE)
.list();
return name;
}
});
}
@Test
public void named() throws Exception {
request()
.get("/named?id=1&id=2")
.expect("[Jooby, Rock]");
request()
.get("/pos?id=1&id=2")
.expect("[Jooby, Rock]");
}
}