關於Mybatis的mapper文件中${}和#{}的區別和注意事項


#{}占位符 可以有效防止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}%'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM