首頁  >  文章  >  需要@Bind嗎?

需要@Bind嗎?

WBOY
WBOY轉載
2024-02-11 13:57:08579瀏覽

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的。

請同時查看參考文件的相應部分:https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

#

以上是需要@Bind嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除