gpt4 book ai didi

java - @Bind 可以使用 JDBI 与枚举和其他任意类型一起使用吗?

转载 作者:可可西里 更新时间:2023-11-01 06:32:35 24 4
gpt4 key购买 nike

JDBI 是否支持通过注释绑定(bind)枚举类型?

例如,假设一个 DAO 包含一个方法:

@SqlQuery("select count(*) from answer a where a.foo = :foo")
Long someSqlQuery(@Bind("foo") Foo foo);

而且,foo 等于 Foo.BAR,我可以期待查询吗:

select count(*) from answer a where a.foo = 'BAR'

如果是,是否使用 toString() 来确定替换的内容?

此外,JDBI 是否允许将 @Bind 与任何扩展 Object 的类型一起使用?如果是这样,是否使用了 toString()

最佳答案

根据source code使用的是Enum.name(),不是toString()

如果绑定(bind)了一个对象,jdbi 将使用您正在使用的 jdbc 驱动程序的 setObject(Object object)。例如,根据我使用 PostgreSQL 的经验,它成功地将 Map 绑定(bind)到 hstore 并将数组绑定(bind)到 postgreSQL array,因为这就是 PostgreSQL 的 jdbc 驱动程序所做的。

如果你想以特定的方式处理特定类型的对象,你可以实现 ArgumentFactorys(似乎没有文档,但在 Stack Overflow 中有一个例子)或 BinderFactory s (这是我现在才发现的。)

关于java - @Bind 可以使用 JDBI 与枚举和其他任意类型一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com