首页  >  文章  >  需要@Bind吗?

需要@Bind吗?

WBOY
WBOY转载
2024-02-11 13:57:08461浏览

php小编百草在这里为大家解答一个常见的问题:“需要@Bind吗?”对于初学者来说,@Bind是一个常见的注解,在某些框架和库中使用。但是,在PHP中,并不需要使用@Bind注解。PHP是一种动态语言,不需要显式地绑定函数或方法的参数。函数和方法的参数会根据调用时传入的实际参数进行绑定。因此,在PHP中,不需要使用@Bind注解来进行参数绑定。希望对大家有所帮助!

问题内容

我偶然发现,在 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 编译代码时才能省略该注释。很可能第一个项目正在使用该标志进行编译,而另一个项目则没有。

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

另请查看参考文档的相应部分:https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

以上是需要@Bind吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除