在dropwizard资源类中使用jdbi sql接口

时间:2014-05-09 10:02:16

标签: java sql dropwizard

我在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接口在uidattrName上执行一些sql查询。接口位于包mypackage.api中,它是资源包的并行包。 我怎样才能在这里实现这些界面。

1 个答案:

答案 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;变量,然后可用于查找数据