gpt4 book ai didi

java - 使用@BindBean 时如何忽略属性

转载 作者:行者123 更新时间:2023-11-30 10:36:09 26 4
gpt4 key购买 nike

我在这个简单的查询中使用 JDBI:

@SqlQuery("SELECT id FROM myTable WHERE value = :bean.one")
int search(@BindBean("bean") MyBean bean);

public class Bean {
String one;
String two;
public String getTwo() { throw new IllegalStateException(); }
// other methods omitted
}

查询中只使用了 one 属性,所以我希望它能正常工作。不幸的是,默认的 bean 映射器首先从 bean 收集所有属性,然后在查询中填充它们。

我可以告诉 JDBI 忽略 bean 属性或方法,这样它就不会被调用吗?

最佳答案

这应该被视为 v2 中的错误(或至少是 Papercut )——请 report it to the team如果你想修复它。

作为解决方法,Query.bindFromProperties(bean) 将忽略不在查询中的属性。如果您将 SQL 方法重写为具体/默认方法:

interface MyDao extends GetHandle {
default int search(MyBean bean) {
return getHandle().createQuery(
"SELECT id FROM myTable WHERE value = :bean.one")
.bindFromProperties(bean)
.mapTo(int.class)
.first();
}
}

这已在最新的 v3 alpha 中得到修复,这是值得的。

关于java - 使用@BindBean 时如何忽略属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40720104/

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