首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dropwizard存储过程示例

Dropwizard存储过程示例
EN

Stack Overflow用户
提问于 2015-11-07 17:29:42
回答 4查看 2.6K关注 0票数 4

我是dropwizard的新手。

EN

回答 4

Stack Overflow用户

发布于 2016-04-04 05:59:24

使用JDBI,可以将对象SQL查询指定为方法注释。DB将此字符串视为普通SQL。执行存储过程的示例DAO可能如下所示:

代码语言:javascript
运行
复制
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/

票数 3
EN

Stack Overflow用户

发布于 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,您可以快速设置组合,并开始验证它在您的案例中是否有效。

票数 1
EN

Stack Overflow用户

发布于 2017-03-02 01:18:14

DropWizard JDBI提供了两个选项来进行存储过程调用。这取决于您希望从存储的proc中获得什么。

如果你想从存储的Proc中得到结果集,Andy已经回答了:

代码语言:javascript
运行
复制
public interface DAO
{
  @SqlQuery("call sp_name(:id)")
  String query(@Bind("id") int id);
}

另一种情况是,存储的proc不返回结果集,但提供了一些输出参数。以下是您可以执行的操作:

代码语言:javascript
运行
复制
@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:

代码语言:javascript
运行
复制
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版本是旧的)。因此,您可以通过执行以下操作来获取连接:

代码语言:javascript
运行
复制
handle = jdbi.open()
handle.getConnection()

然后对连接执行您想要执行的操作。

另外,还有一件事--我不会尝试使用Hibernate来存储Proc调用。只是更多的痛苦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33581189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档