java 中#{}與${}的區別

面試碰到的問題總結如何:

#{}: 表示一個佔位符號,實現向PreparedStatement佔位符中設置值(#{}表示一個佔位符?)

自動進行從Java類型到JDBC類型的轉換(因此#{}可以有效防止SQL注入).

#{}可以接收簡單類型或PO屬性值,如果parameterType傳輸的是單個簡單類型值,#{}花括號中可以是value或其它名稱.

${}: 表示拼接SQL串,通過${}可將parameterType內容拼接在SQL中而不進行JDBC類型轉換,${}可以接收簡單類型或PO屬性值,如果parameterType傳輸的是單個簡單類型值,${}花括號中只能是value.

雖然${}不能防止SQL注入,但有時${}會非常方便(如order by排序,需要將列名通過參數傳入SQL,則用ORDER BY ${column},使用#{}則無法實現此功能.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章