#{}础倍、${}
#{參數(shù)}:占位符;
參數(shù)類型:
1)亡嫌、可以接受任意的基本數(shù)據(jù)類型;
注运沦、當(dāng)參數(shù)為基本數(shù)據(jù)數(shù)據(jù)類型時(shí),占位符中的屬性名可以隨意寫,但是建議為見明知意;
2)县习、可以接收pojo中的屬性值;
注涮母、當(dāng)參數(shù)為pojo中的變量時(shí),占位符中的屬性名為pojo中所對(duì)應(yīng)的變量名;
3)、可以通過HashMap設(shè)置;
注躁愿、當(dāng)參數(shù)為pojo中的變量時(shí),占位符中的屬性名為集合中的鍵名;
${參數(shù)}:拼接符;
1)叛本、可以接受任意的基本數(shù)據(jù)類型;
注、當(dāng)參數(shù)為基本數(shù)據(jù)數(shù)據(jù)類型時(shí),占位符中的屬性名為value;
2)彤钟、可以接收pojo中的屬性值;
注来候、當(dāng)參數(shù)為pojo中的變量時(shí),占位符中的屬性名為pojo中所對(duì)應(yīng)的變量名;
3)逸雹、可以通過HashMap設(shè)置;
注营搅、當(dāng)參數(shù)為pojo中的變量時(shí),占位符中的屬性名為集合中的鍵名;
${}云挟、#{}區(qū)別:
執(zhí)行sql的方式:
#{}:預(yù)編譯sql,相當(dāng)于PreparedStatement;
${}:不會(huì)進(jìn)行預(yù)編譯,相當(dāng)于Statement;
安全性:
#{}:安全性高,不會(huì)發(fā)生sql注入;
${}:安全性不高,可能發(fā)生sql注入;
效率:
#{}:效率相對(duì)高;
${}:效率相對(duì)低;
數(shù)據(jù)類型:
#{}:不需要考慮數(shù)據(jù)類型(數(shù)據(jù)庫類型與java類型之間)是否相同,MyBatis會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類型;
${}:需要考慮數(shù)據(jù)類型转质;
參數(shù):
當(dāng)參數(shù)為基本數(shù)據(jù)類型時(shí),占位符中可以使用任意變量接收,拼接符只能通過value變量接受;