ホームページ  >  記事  >  @Bind が必要ですか?

@Bind が必要ですか?

WBOY
WBOY転載
2024-02-11 13:57:08461ブラウズ

php エディター Baicao は、「@Bind は必要ですか?」というよくある質問に答えます。初心者向けに、@Bind は一部のフレームワークやライブラリで使用される一般的なアノテーションです。ただし、PHP では @Bind アノテーションを使用する必要はありません。 PHP は動的言語であり、関数やメソッドのパラメーターを明示的にバインドする必要はありません。関数とメソッドのパラメーターは、呼び出し時に渡される実際のパラメーターに従ってバインドされます。したがって、PHP では、パラメーターのバインドに @Bind アノテーションを使用する必要はありません。お役に立てれば幸いです!

質問内容

Spring Boot プロジェクトでは、以下のようなクエリでパラメータをバインドする必要がないことを偶然発見しました。

リーリー

これは機能します:

リーリー

ただし、別のプロジェクト (Spring Boot プロジェクトではない) を 3.43.0 を使用するようにアップグレードすると、バインディングを削除できません。

スプリング ブート プロジェクトではバインディングなしでクエリが機能するのに、通常の Java プロジェクトでは機能しない理由について、適切な説明を持っている人はいますか? (明白な説明に加えて、魔法)。バインディングをスキップするために使用できるトリックはありますか?

解決策

このコメントは、javac フラグ -parameters を使用してコードをコンパイルする場合にのみ省略できます。最初のプロジェクトはそのフラグを使用してコンパイルされているが、もう 1 つのプロジェクトはコンパイルされていない可能性があります。

-parameters フラグは Java 8 で導入されました。このフラグを使用すると、メソッドの変数名を実行時に反映できるようになります。 JDBI がリフレクションを通じて変数名 id を推論できる場合、クエリ パラメータ id に対するものであることを明確にするために @Bind アノテーションを使用する必要はありません。 。

参考ドキュメントの対応するセクションも確認してください: https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

以上が@Bind が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。