JDBI通用cruddao接口,带有动态表名称

发布于 2025-01-21 18:39:34 字数 751 浏览 0 评论 0原文

我有一个父母的jdbi界面,我的daos继承了(如

@UseClasspathSqlLocator
public interface CrudDao<T, ID> {
  @SqlUpdate 
  void insert(@BindBean T entity);

  @SqlQuery 
  Optional<T> findById(ID id);

  @SqlQuery
  List<T> list();

  @SqlUpdate
  void update(@BindBean T entity);

  @SqlUpdate
  void deleteById(ID id);
}

”我为我创建的每个DAO创建insert.sql,update.sql,deletebyId.sql,list.sql和findbyid.sql。由于后三个SQL语句在所有DAO类中都相同(除非表名除外),因此是否只能指定SQL语句一次,并且所有继承的Cruddao类都使用它们?

我想起了Spring jpa的 Spel支持 #{#entityName}查询语法。

I have a parent JDBI interface that my daos inherit from (as seen in JDBI's docs):

@UseClasspathSqlLocator
public interface CrudDao<T, ID> {
  @SqlUpdate 
  void insert(@BindBean T entity);

  @SqlQuery 
  Optional<T> findById(ID id);

  @SqlQuery
  List<T> list();

  @SqlUpdate
  void update(@BindBean T entity);

  @SqlUpdate
  void deleteById(ID id);
}

The technique above requires me to create insert.sql, update.sql, deleteById.sql, list.sql, and findById.sql, for each DAO that I create. Since these latter three sql statements would be identical among all the DAO classes (except for the table name), is it possible to specify the sql statement only once and have all the inheriting CrudDao classes use them?

I'm reminded of how Spring JPA's SpEL supports the #{#entityName} syntax for queries.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

[旋木] 2025-01-28 18:39:34

也许这可以帮助您。

查看@Define注释。

如何在JDBI中动态绑定一个表名称

Maybe this is something that could help you.

Check out the @define annotation.

How to dynamically bind a table name in JDBI

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文