Rumah  >  Artikel  >  Perlukan @Bind?

Perlukan @Bind?

WBOY
WBOYke hadapan
2024-02-11 13:57:08461semak imbas

Editor PHP Baicao hadir untuk menjawab soalan biasa: "Adakah saya memerlukan @Bind?" Untuk pemula, @Bind ialah anotasi biasa, digunakan dalam beberapa rangka kerja dan perpustakaan. Walau bagaimanapun, dalam PHP, tidak perlu menggunakan anotasi @Bind. PHP ialah bahasa dinamik dan tidak memerlukan pengikatan eksplisit fungsi atau parameter kaedah. Parameter fungsi dan kaedah terikat mengikut parameter sebenar yang diluluskan apabila dipanggil. Oleh itu, dalam PHP, tidak perlu menggunakan anotasi @Bind untuk pengikatan parameter. Semoga ia membantu semua orang!

Kandungan soalan

Saya secara tidak sengaja mendapati bahawa dalam projek but spring saya tidak perlu mengikat parameter dalam pertanyaan seperti di bawah.

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

Ini berfungsi:

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

Namun, apabila saya menaik taraf projek lain (bukan projek but spring) untuk menggunakan 3.43.0, saya tidak dapat mengalih keluar pengikatan.

Adakah sesiapa mempunyai penjelasan yang baik mengapa saya boleh mendapatkan pertanyaan untuk berfungsi tanpa pengikatan dalam projek but spring, tetapi tidak dalam projek java biasa? (Selain penjelasan yang jelas, sihir). Adakah terdapat sebarang helah yang boleh saya gunakan untuk melangkau pengikatan?

Penyelesaian

Komen ini hanya boleh ditinggalkan apabila menyusun kod dengan bendera javac -parameters. Ada kemungkinan bahawa projek pertama sedang menyusun dengan bendera itu dan yang satu lagi tidak.

Bendera -parameters 标志。如果使用该标志,则方法的变量名称将在运行时可用于反射。当JDBI可以通过反射推断变量名为id时,不需要@Bind注解来明确它是针对查询参数id diperkenalkan di Java 8. Jika bendera ini digunakan, nama pembolehubah kaedah akan tersedia untuk dicerminkan semasa masa jalan. Apabila JDBI boleh membuat kesimpulan nama pembolehubah id melalui refleksi, anotasi @Bind tidak diperlukan untuk menjelaskan bahawa ia adalah untuk parameter pertanyaan id.

Sila semak juga bahagian dokumen rujukan yang sepadan: https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

Atas ialah kandungan terperinci Perlukan @Bind?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam