天天看點

mybatise#{}如何防止sql注入

1、#{}是預編譯處理是一個占位符,mybatis遇見#{}時,會将sql中的#{}替換為?号。

select * from  table where id=#{id}

當id我們傳值為101時,
mybatise将預編譯為
select * from  table where id=?
最終執行的sql為
select * from  table where id='101'
      

  

2、$ {}是字元串替換,,調用PreparedStatement的set方法來指派;mybatis在處理時 ,就 是 把 {}替換成變量的值。使用#{}可以有效的防止SQL注入,提高系統安全性。

select * from table where id=${id}
當id傳值為101時
mybatise将sql轉換為
select * from table where id=101        

3、#{}将傳入的資料都當成一個字元串,會對自動傳入的資料加一個雙引号。

4、${}将傳入的資料直接顯示生成在sql中。

待續。。。

本文來自部落格園,作者:陳浩文,轉載請注明原文連結:https://www.cnblogs.com/chenhaowen/p/16627854.html