需要@Bind吗?

问题描述 投票:0回答:1

我偶然发现,在 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 项目中却不行? (除了明显的解释,魔术)。有什么技巧可以用来跳过绑定吗?

java spring-boot spark-java jdbi
1个回答
0
投票

只有在使用 javac 标志

-parameters
编译代码时才能省略注释。很可能第一个项目正在使用该标志进行编译,而另一个项目则没有。

标志

-parameters
已在Java 8中引入。如果使用它,则方法的变量名称将在运行时可用于反射。当 JDBI 可以通过反射推断变量名称为
id
时,不需要
@Bind
注解来明确它是用于查询参数
id

© www.soinside.com 2019 - 2024. All rights reserved.