使用jdbi执行创建或更新

时间:2014-10-27 09:02:54

标签: java jdbi

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

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

但是:在某些情况下,我无法确定是否要创建实体或更新现有实体。 我会放置一个“select”语句,并根据其返回值使用insert或update语句。

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

感谢任何提示。

1 个答案:

答案 0 :(得分:4)

感谢@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(...);
}