1. 程式人生 > >mybatis中#{}和${}區別

mybatis中#{}和${}區別

開發思考由來:

<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 關鍵字將查詢條件忽略。