3

对于一个小的新项目,我决定尝试一下JDBI(通常我使用 hibernate/jpa)。

我喜欢使用@SqlUpdate/@SqlQuery 的轻量级、基于注释的 dao 创建。

但是:在某些情况下,我不确定是要创建实体还是更新现有实体。我会放置一个“选择”语句,并根据它的返回值使用插入或更新语句。

问题:jdbi 中的“仅接口”dao 是否以某种方式支持这一点?还是我必须自己编写一个“createOrUpdate”方法(使自动生成的 dao 或多或少过时)?

感谢您的任何提示。

4

1 回答 1

5

感谢@zloster,我现在构建了一个基于抽象类而不是接口的解决方案。根据需要工作。

@SqlUpdate("insert ...")
public abstract void insert(...);

@SqlUpdate("update...")
public abstract void update();

public X createOrUpdate(final X x) {
    if (!exists(x)) {
        insert(x);
    } else {
        update(x);
    }
    return find(...);
}
于 2014-11-09T17:40:49.917 回答