[英]using jdbi sql interfaces in dropwizard resource classes
我已經在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
,它是資源包的並行包。 我如何在這里實現這些接口。
我的dropwizard服務使用jdbi與數據庫層進行交互。
我使用的方法(這是相當標准的方法,並且適用於您的方案)是在dropwizard Application類運行方法中定義jdbi工廠,例如(數據庫配置詳細信息放在yml config文件中-應該是可以在線獲取的示例) ):
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應定義將您的資源參數作為“綁定”變量接受的函數,然后可用於查找數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.