对于一个小的新项目,我决定尝试一下JDBI(通常我使用 hibernate/jpa)。
我喜欢使用@SqlUpdate/@SqlQuery 的轻量级、基于注释的 dao 创建。
但是:在某些情况下,我不确定是要创建实体还是更新现有实体。我会放置一个“选择”语句,并根据它的返回值使用插入或更新语句。
问题:jdbi 中的“仅接口”dao 是否以某种方式支持这一点?还是我必须自己编写一个“createOrUpdate”方法(使自动生成的 dao 或多或少过时)?
感谢您的任何提示。
感谢@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(...);
}