面試碰到的問題總結如何:
#{}: 表示一個佔位符號,實現向PreparedStatement佔位符中設置值(#{}表示一個佔位符?)
自動進行從Java類型到JDBC類型的轉換(因此#{}可以有效防止SQL注入).
#{}可以接收簡單類型或PO屬性值,如果parameterType傳輸的是單個簡單類型值,#{}花括號中可以是value或其它名稱.
${}: 表示拼接SQL串,通過${}可將parameterType內容拼接在SQL中而不進行JDBC類型轉換,${}可以接收簡單類型或PO屬性值,如果parameterType傳輸的是單個簡單類型值,${}花括號中只能是value.
雖然${}不能防止SQL注入,但有時${}會非常方便(如order by排序,需要將列名通過參數傳入SQL,則用ORDER BY ${column},使用#{}則無法實現此功能.