gpt4 book ai didi

java - 在 dropwizard 资源类中使用 jdbi sql 接口(interface)

转载 作者:行者123 更新时间:2023-12-01 13:00:21 25 4
gpt4 key购买 nike

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

最佳答案

我的 dropwizard 服务使用 jdbi 与数据库层交互。

我使用的方法(这是相当标准的方法,适用于您的场景)是在 dropwizard 应用程序类 run 方法中定义 jdbi 工厂,例如(数据库配置详细信息位于 yml 配置文件中 - 应该是在线提供的示例):

 final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, configuration.getDatabaseConfig(), "<your-database-name>");

一旦您有权访问 jdbi 工厂,您就可以直接实例化您的 dao 接口(interface):

 final MyDao myDao = jdbi.onDemand(MyDao.class);

正如上面的人在问题评论中提到的,您只需将 dao 对象传递到您的资源中,例如通过构造函数:

 MyResource myResource = new MyResource(myDao);

您的 dao 应该定义接受资源参数作为“绑定(bind)”变量的函数,然后可以使用该函数来查找您的数据

关于java - 在 dropwizard 资源类中使用 jdbi sql 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23561789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com