我们的应用程序使用Dropwizard和JDBI来处理对Postgres数据库的查询。
通常,我们会有一个不同的数据库用于生产和生产,但现在我们正在与一个新系统集成,这将共享用于生产和产品的相同数据库,但使用了一组不同的表。
例如,我们将有表用户和users_stg
有没有一种方法可以将表名以动态方式传递给查询,以便我们可以在属性文件中设置表名?
当前查询的示例
public interface UsersDao {
@SqlUpdate("update table users ...")
void updateUsers();
}
所需查询示例
@SqlUpdate("update table :table ...")
void updateUsers(@Bind String table);
当然,@Bind不会起作用,因为它仅用于参数,但是还有其他方法可以使用表名吗?
如果Dropwizard不需要接口,我可以在dao中有一个属性,但是作为一个接口,我也不能初始化它。
这起了作用
@SqlUpdate("更新表格...")void update users(@定义字符串表);
问题内容: 如何在JDBI中使用SQL对象查询进行排序? 我想做类似的事情: 要么 问题答案: 我最近一直在探索与JDBI捆绑在一起的DropWizard,并很快遇到了同样的问题。不幸的是,JDBI的文档乏善可陈(JavaDoc和它的git存储库中的一些示例单元测试并没有单独解决),这令人失望。 这是我根据示例DAO在JDBI的Sql Object API中实现动态排序的结果: @ UseStri
问题内容: 我有5个表或表要从\查询 我的语法我喜欢这样 问题是,当我运行此命令时,我收到一条错误消息:“ .....您在SQL WHERE Patient_ID =吗?附近有错误?” 当我使用system.out.println(sql2)输出sql时; 值未在sql2中设置 问题答案: 当您准备一条语句时,数据库将构造一个执行计划,如果表不存在,则该计划无法执行。换句话说,Placehodle
问题内容: 我想使用表变量而不是临时表,但是我的主要查询构造是动态的。动态查询用单引号引起来,所以我该如何从@TableVariable中获取数据。我不想删除动态查询,因为稍后会添加一些参数。 例如,以下是错误代码,其中我已将表变量写入动态查询中..... 在这方面帮助我。 提前致谢。 问题答案: 试试这个 :
问题内容: 如何在jDBI中执行类似的操作? 表: foo(id int,name varchar) 与myBatis中的@SelectProvider相似。 问题答案: 这应该工作: 不要忘记用以下方法注释包含此方法的类: 注解(因为JDBI底层使用Apache StringTemplate进行此类替换)。还要注意,使用此注释,您不能在SQL查询中使用’<’字符而不进行转义(因为它是String
问题内容: 我的Postgres版本是: “PostgreSQL 9.4.4, compiled by Visual C++ build 1800, 32-bit” 假设我有两个表Table1和Table2,分别具有columncol1和col2。 还有另一个表,Table3用于存储将数据从迁移Table1到的公式Table2: 如何在动态查询中编译此公式并将其插入目标表? 问题答案: 动态构建命
问题内容: 我正在使用PDO,并希望执行以下操作: PDO是否允许我这样绑定表名和列名?这 似乎是 允许的,但是却让我周围的报价参数,即使我用PDO :: PARAM_INT或PDO :: PARAM_BOOL作为数据类型。 如果这不起作用,如何安全地对变量进行转义,以便可以在查询中对它们进行插值? 问题答案: 不幸的是,您不能按列名绑定参数。 您可以尝试动态创建SQL命令: 只要确保对参数/变量