在這裡用到了#{},使用#時:
1、用來傳入引數,sql在解析的時候會加上」 「,當成字串來解析 ,如這裡 role_id = 「roleid」;
2、#{}能夠很大程度上防止sql注入;
延伸:1、用傳入資料直接顯示在生成的sql中,如上面的語句,用roleid=傳入資料直接顯示在生成的sql中,如上面的語句,用roleid=,那麼sql在解析的時候值為roleid = roleid,執行時會報錯;
2、${}方式無法防止sql注入;
3、$一般用入傳入資料庫物件,比如資料庫表名;
4、能用#{}時盡量用#{};
注意:mybaties排序時使用order by 動態引數時需要注意,使用${}而不用#{};
SQL中 與 的區別
區別 1 將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是id,則解析成的sql為order by id 2 將傳入的資料直接顯示生成在sql中。如 order by user id 如果傳入的值是id,則解析成的sql為order b...
sql中exist與in的區別
in 和 exists也是很好區別的.in 是乙個集合運算子.a in 這個運算中,前面是乙個元素,後面是乙個集合,集合中的元素型別是和前面的元素一樣的.而exists是乙個存在判斷,如果後面的查詢中有結果,則exists為真,否則為假.in 運算用在語句中,它後面帶的select 一定是選乙個字段...
sql中exist與in的區別
in 和 exists也是很好區別的.in 是乙個集合運算子.a in 這個運算中,前面是乙個元素,後面是乙個集合,集合中的元素型別是和前面的元素一樣的.而exists是乙個存在判斷,如果後面的查詢中有結果,則exists為真,否則為假.in 運算用在語句中,它後面帶的select 一定是選乙個字段...