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

Mybatis 中 ${}和 #{} 的區別

${} :

  1. ${} 則只是簡單的字串替換 
  2. 動態解析sql 表現為 select * from user where user_name = "lilei" 

${}使用應該注意的問題:

危險操作如下 select  * from ${tableName} where user_name = #{name}

如果此時 傳進來的引數 tableName = "user ; delete user; -- "  動態解析之後如下:

select * from user ; delete user -- where user_name = ?

-- 之後的語句會被註釋掉 ,原本的sql語句則變成了 查詢所有的使用者資訊 + 刪除使用者表對資料庫造成重大損傷

#{}:

  1. #{}在預處理時,會把引數部分用一個佔位符 ? 表示 
  2. 表現為 select * form user where user_name = ?