我在dropwizard项目中定义了一个资源类
@Path("/user/{user}")
@Produces(MediaType.APPLICATION_JSON)
public class UserResource {
@GET
@Path("/attribute/{attr_name}")
public Attribute fetch(@PathParam("user") IntParam uid, @PathParam("attr_name") String attrName)
{
//TODO: write code here
}
}
我想在这里使用sql接口在uid
和attrName
上执行一些sql查询。接口位于包mypackage.api
中,它是资源包的并行包。
我怎样才能在这里实现这些界面。
答案 0 :(得分:1)
我的dropwizard服务使用jdbi与数据库层进行交互。
我使用的方法(这是相当标准的方法,适用于您的场景)是在dropwizard Application类运行方法中定义jdbi工厂,例如: (数据库配置详细信息在yml配置文件中 - 应该是在线提供的示例):
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, configuration.getDatabaseConfig(), "<your-database-name>");
一旦有权访问jdbi工厂,就可以直接实例化你的dao接口:
final MyDao myDao = jdbi.onDemand(MyDao.class);
正如上面的人在问题评论中提到的那样,你只需要将dao对象传递给你的资源,例如:通过构造函数:
MyResource myResource = new MyResource(myDao);
你的dao应该定义接受你的资源参数的函数&#39; bind&#39;变量,然后可用于查找数据