mybatis中#{}和${}區別
阿新 • • 發佈:2018-12-13
開發思考由來:
<select id="findUserById" parameterType="int" resultType="com.zzu.ssm.po.User"> select * from user where id=#{id} </select> <select id="findUserByUsername" parameterType="java.lang.String" resultType="com.zzu.ssm.po.User"> select * from user where username like '%${value}%' </select>
- 區別1
#{} :相當於JDBC SQL語句中的佔位符? (PreparedStatement) ${} : 相當於JDBC SQL語句中的連線符合 + (Statement)
- 區別2
#{} : 進行輸入對映的時候,會對引數進行型別解析(如果是String型別,那麼SQL語句會自動加上’ ') ${} :進行輸入對映的時候,將引數原樣輸出到SQL語句中
- 區別3
#{} : 如果進行簡單型別(String、Date、8種基本型別的包裝類)的輸入對映時,#{}中引數名稱可以任意 ${} :如果進行簡單型別(String、Date、8種基本型別的包裝類)的輸入對映時,引數名稱必須是value
- 區別4
${} :存在SQL注入問題 ,使用OR 1=1 關鍵字將查詢條件忽略。