我是dropwizard的新手。
发布于 2016-04-04 05:59:24
使用JDBI,可以将对象SQL查询指定为方法注释。DB将此字符串视为普通SQL。执行存储过程的示例DAO可能如下所示:
public interface SomeQueries
{
@SqlQuery("call find_name_procedure(:id)")
String findName(@Bind("id") int id);
}
其中已经定义了find_name_procedure
。
有关更多信息,请参阅http://jdbi.org/sql_object_api_queries/
发布于 2016-09-27 20:50:52
Jooq是一种从java调用存储过程的优雅方式(参见https://dzone.com/articles/using-stored-procedures-with-jpa-jdbc-meh-just-use)。您还有一个第三方模块将Jooq集成到Dropwizard中(请参阅http://modules.dropwizard.io/thirdparty/),因此如果您熟悉Maven,您可以快速设置组合,并开始验证它在您的案例中是否有效。
发布于 2017-03-02 01:18:14
DropWizard JDBI提供了两个选项来进行存储过程调用。这取决于您希望从存储的proc中获得什么。
如果你想从存储的Proc中得到结果集,Andy已经回答了:
public interface DAO
{
@SqlQuery("call sp_name(:id)")
String query(@Bind("id") int id);
}
另一种情况是,存储的proc不返回结果集,但提供了一些输出参数。以下是您可以执行的操作:
@SqlCall("{ CALL sp_name(:id, :id2) }")
@OutParameter(name = "out", sqlType = Types.INTEGER)
OutParameters spCal(@Bind("id") long id, @Bind("id2") long id2);
OutParameter注释在DropWizard中可能不起作用,因为该注释是在v3中引入的,您可以使用以下命令访问OutParameters:
try (Handle handle = dbi.open()) {
parameters = handle.createCall("CALL sp_name(:IN_Field1,:OUT_field2)")
.bind("IN_Field1", filed1)
.registerOutParameter("OUT_field2", Types.INTEGER)
.invoke();
}
对于一些需要输出参数和结果集的奇怪情况,DropWizard目前没有提供任何直接的方法(因为dropwizard的JDBI版本是旧的)。因此,您可以通过执行以下操作来获取连接:
handle = jdbi.open()
handle.getConnection()
然后对连接执行您想要执行的操作。
另外,还有一件事--我不会尝试使用Hibernate来存储Proc调用。只是更多的痛苦。
https://stackoverflow.com/questions/33581189
复制相似问题