JDBI通用cruddao接口,带有动态表名称
我有一个父母的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许这可以帮助您。
查看@Define注释。
如何在JDBI中动态绑定一个表名称
Maybe this is something that could help you.
Check out the @define annotation.
How to dynamically bind a table name in JDBI