#{}占位符 可以有效防止sql注入,使用時不需要關注參數的類型,mybatis會自動進行java類型和jdbc類型的轉換;#{}可以接收簡單類型值或pojo屬性值,如果parameterType傳輸單個簡單類型值,#{}括號中可以是value或者其他名稱。
${}和#{}不同,通過${}可以將parameterType傳入的內容拼接在sql中且不進行jdbc類型轉換,${}可以接收簡單類型值或者pojo屬性值,如果parameterType傳輸單個簡單類型值,${}括號中只能是value,如果使用別的名稱則會出現 org.apache.ibatis.reflection.ReflectionException:There is no getter for…… 的錯誤,這時有兩種解決方式,1、將mapper文件中${}括號的值改為value,2、在dao文件的參數前增加注解 @Param("名稱"),如 public int getPageCount(@Param("condition") String condition);使用${}不能防止sql注入,但經常用於模糊查詢中如like'%${value}%'