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