Maison  >  Article  >  Besoin de @Bind ?

Besoin de @Bind ?

WBOY
WBOYavant
2024-02-11 13:57:08461parcourir

L'éditeur PHP Baicao est là pour répondre à une question courante : « Ai-je besoin de @Bind ? » Pour les débutants, @Bind est une annotation courante, utilisée dans certains frameworks et bibliothèques. Cependant, en PHP, il n'est pas nécessaire d'utiliser l'annotation @Bind. PHP est un langage dynamique et ne nécessite pas de liaison explicite des paramètres de fonction ou de méthode. Les paramètres des fonctions et des méthodes sont liés en fonction des paramètres réels transmis lors de l'appel. Par conséquent, en PHP, il n'est pas nécessaire d'utiliser l'annotation @Bind pour la liaison des paramètres. J'espère être utile !

Contenu de la question

J'ai découvert accidentellement que dans un projet Spring Boot, je n'ai pas besoin de lier de paramètres dans une requête comme ci-dessous.

@sqlquery("""
        select id, name
        from organisations
        where id = :id
          """)
@registerrowmapper(organisationmapper.class)
organisation getorgansation(@bind("id") string id);

Ça marche :

@SqlQuery("""
        select id, name
        from organisations
        where id = :id
          """)
@RegisterRowMapper(OrganisationMapper.class)
Organisation getOrgansation(String id);

Cependant, lorsque j'ai mis à niveau un autre projet (pas le projet Spring Boot) pour utiliser la version 3.43.0, je n'ai pas pu supprimer les liaisons.

Quelqu'un a-t-il une bonne explication pour laquelle je peux faire fonctionner la requête sans liaisons dans un projet Spring Boot, mais pas dans un projet Java normal ? (En plus de l'explication évidente, la magie). Existe-t-il une astuce que je peux utiliser pour ignorer la liaison ?

Solution de contournement

Ce commentaire ne peut être omis que lors de la compilation du code avec le drapeau javac -parameters. Il est possible que le premier projet soit compilé avec ce drapeau et que l'autre ne le soit pas.

Le drapeau -parameters 标志。如果使用该标志,则方法的变量名称将在运行时可用于反射。当JDBI可以通过反射推断变量名为id时,不需要@Bind注解来明确它是针对查询参数id a été introduit dans Java 8. Si cet indicateur est utilisé, les noms de variables de la méthode seront disponibles pour réflexion au moment de l'exécution. Lorsque JDBI peut déduire le nom de la variable id par réflexion, il n'est pas nécessaire que l'annotation @Bind indique clairement qu'il s'agit du paramètre de requête id<.>. </.>

Veuillez également consulter la section correspondante du document de référence : https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer