我偶然发现,在 Spring Boot 项目中,我不必在像下面这样的查询中绑定参数。
@SqlQuery("""
select id, name
from organisations
where id = :id
""")
@RegisterRowMapper(OrganisationMapper.class)
Organisation getOrgansation(@Bind("id") String id);
这有效:
@SqlQuery("""
select id, name
from organisations
where id = :id
""")
@RegisterRowMapper(OrganisationMapper.class)
Organisation getOrgansation(String id);
但是,当我升级另一个项目(而不是 Spring Boot 项目)以使用 3.43.0 时,我无法删除绑定。
有谁有一个很好的解释,为什么我可以在没有 Spring Boot 项目绑定的情况下让查询工作,但在普通的 java 项目中却不行? (除了明显的解释,魔术)。有什么技巧可以用来跳过绑定吗?
只有在使用 javac 标志
-parameters
编译代码时才能省略注释。很可能第一个项目正在使用该标志进行编译,而另一个项目则没有。
标志
-parameters
已在Java 8中引入。如果使用它,则方法的变量名称将在运行时可用于反射。当 JDBI 可以通过反射推断变量名称为 id
时,不需要 @Bind
注解来明确它是用于查询参数 id
。