MyBatis中的#{}和${}如何使用

小億
82
2024-05-08 13:12:52

在MyBatis中,#{}和${}都是用于向SQL語(yǔ)句中傳遞參數(shù)的方式,但它們有一些區(qū)別。

  1. #{}:#{}是使用預(yù)編譯的方式傳遞參數(shù),MyBatis會(huì)將#{}中的內(nèi)容替換為一個(gè)問(wèn)號(hào)(?),然后將參數(shù)值作為預(yù)編譯參數(shù)傳遞給數(shù)據(jù)庫(kù),這樣可以避免SQL注入攻擊。示例:SELECT * FROM user WHERE id = #{userId}

  2. ${}:${}是直接替換參數(shù)值的方式,MyBatis會(huì)將${}中的內(nèi)容直接替換為參數(shù)值,這樣會(huì)有SQL注入的風(fēng)險(xiǎn)。示例:SELECT * FROM user WHERE id = ${userId}

因此,一般來(lái)說(shuō)推薦使用#{}來(lái)傳遞參數(shù),以增加安全性。如果需要?jiǎng)討B(tài)拼接SQL語(yǔ)句或者傳遞一些常量值,可以使用${}。

0