Heim  >  Artikel  >  Benötigen Sie @Bind?

Benötigen Sie @Bind?

WBOY
WBOYnach vorne
2024-02-11 13:57:08460Durchsuche

Der PHP-Editor Baicao ist hier, um eine häufig gestellte Frage zu beantworten: „Benötige ich @Bind?“ Für Anfänger ist @Bind eine gängige Annotation, die in einigen Frameworks und Bibliotheken verwendet wird. In PHP besteht jedoch keine Notwendigkeit, die Annotation @Bind zu verwenden. PHP ist eine dynamische Sprache und erfordert keine explizite Bindung von Funktions- oder Methodenparametern. Die Parameter von Funktionen und Methoden werden entsprechend den beim Aufruf übergebenen tatsächlichen Parametern gebunden. Daher besteht in PHP keine Notwendigkeit, die @Bind-Annotation für die Parameterbindung zu verwenden. Ich hoffe, hilfreich zu sein!

Frageninhalt

Ich habe zufällig entdeckt, dass ich in einem Spring-Boot-Projekt keine Parameter in einer Abfrage wie unten binden muss.

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

Das funktioniert:

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

Als ich jedoch ein anderes Projekt (nicht das Spring Boot-Projekt) auf die Verwendung von 3.43.0 aktualisiert habe, konnte ich die Bindungen nicht entfernen.

Hat jemand eine gute Erklärung, warum ich die Abfrage in einem Spring-Boot-Projekt ohne Bindungen zum Laufen bringen kann, in einem normalen Java-Projekt jedoch nicht? (Abgesehen von der offensichtlichen Erklärung, Magie). Gibt es einen Trick, mit dem ich die Bindung überspringen kann?

Workaround

Dieser Kommentar kann nur weggelassen werden, wenn der Code mit dem Javac-Flag kompiliert wird -parameters. Es ist möglich, dass das erste Projekt mit dieser Flagge kompiliert wird und das andere nicht.

Die -parameters 标志。如果使用该标志,则方法的变量名称将在运行时可用于反射。当JDBI可以通过反射推断变量名为id时,不需要@Bind注解来明确它是针对查询参数id-Flagge wurde in Java 8 eingeführt. Wenn dieses Flag verwendet wird, stehen die Variablennamen der Methode zur Laufzeit für die Reflektion zur Verfügung. Wenn JDBI den Variablennamen id durch Reflektion ableiten kann, ist die Annotation @Bind nicht erforderlich, um deutlich zu machen, dass es sich um den Abfrageparameter id.

Bitte überprüfen Sie auch den entsprechenden Abschnitt des Referenzdokuments: https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

Das obige ist der detaillierte Inhalt vonBenötigen Sie @Bind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen