sql 中 和 的區別

2021-08-10 19:14:02 字數 730 閱讀 9838

$將傳入的資料直接顯示生成在sql中,那麼我們使用 ${}的時候

select * from user where name = $;
${}在動態解析的時候,會將我們傳入的引數當做string字串填充到我們的語句中,就會變成下面的語句

select * from user where name = "dato";

預編譯之前的 sql 語句已經不包含變數了,完全已經是常量資料了。相當於我們普通沒有變數的sql了。
#{} 在動態解析的時候, 會解析成乙個引數標記符。就是解析之後的語句是:

select * from user where name = #;

select * from user where name = ?;

${}接受從使用者輸出的內容並提供給語句中不變的字串,這樣做是不安全的。這會導致潛在的sql注入攻擊

${}接收輸入引數,型別可以是簡單型別,pojo、hashmap。

如果接收簡單型別,${}中只能寫成value。#{}中可以寫成value或其它名稱

一般模糊查詢的時候使用$, dct_name like '%$%'

sql 中 和 的區別

專案開發過程中,在mybaitis框架中經常sql需要動態賦值,會出現 兩種形式。接下來,我們一起來看乙個案例 根據使用者的姓名來篩選使用者資訊,其中使用者姓名不確定,是動態變化的,sql如下 select from userinfo where user name 張三 查詢名稱是張三的資訊 在x...

sql中 和 的區別

font size 18px delete from ups role permission dataparams where role id 在這裡用到了 使用 時 1 用來傳入引數,sql在解析的時候會加上 當成字串來解析 如這裡 role id roleid 2 能夠很大程度上防止sql注入 ...

sql 中 和 的區別

在sql中對於傳入引數有兩種寫法,剛開始學的時候總是不知道是什麼原因,故此寫下此筆記作為解釋 將傳入的資料直接顯示生成在sql中,那麼我們使用 的時候 select from user where name 在動態解析的時候,會將我們傳入的引數當做string字串填充到我們的語句中,就會變成下面的語...