1.?#將傳入的數(shù)據(jù)都當(dāng)成一個(gè)字符串,會(huì)對(duì)自動(dòng)傳入的數(shù)據(jù)加一個(gè)雙引號(hào)。如:order by #user_id#,如果傳入的值是111,那么解析成sql時(shí)的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
2.?$將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時(shí)的值為order by user_id, 如果傳入的值是id,則解析成的sql為order by id.
3.?#方式能夠很大程度防止sql注入?! ?/p>
4.$方式無(wú)法防止Sql注入。
5.$方式一般用于傳入數(shù)據(jù)庫(kù)對(duì)象,例如傳入表名.
6.一般能用#的就別用$.
MyBatis排序時(shí)使用order by 動(dòng)態(tài)參數(shù)時(shí)需要注意,用$而不是#
字符串替換
默認(rèn)情況下,使用#{}格式的語(yǔ)法會(huì)導(dǎo)致MyBatis創(chuàng)建預(yù)處理語(yǔ)句屬性并以它為背景設(shè)置安全的值(比如?)。這樣做很安全,很迅速也是首選做法,有時(shí)你只是想直接在SQL語(yǔ)句中插入一個(gè)不改變的字符串。比如,像ORDER BY,你可以這樣來(lái)使用: ORDER BY ${columnName}
這里MyBatis不會(huì)修改或轉(zhuǎn)義字符串。
重要:接受從用戶輸出的內(nèi)容并提供給語(yǔ)句中不變的字符串,這樣做是不安全的。這會(huì)導(dǎo)致潛在的SQL注入攻擊,因此你不應(yīng)該允許用戶輸入這些字段,或者通常自行轉(zhuǎn)義并檢查。
以上就是小編為大家?guī)?lái)的淺談mybatis中的#和$的區(qū)別全部?jī)?nèi)容了,希望大家多多支持PHP中文網(wǎng)~
更多淺談mybatis中的#和$的區(qū)別相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

iBatis與MyBatis:你應(yīng)該選擇哪個(gè)?簡(jiǎn)介:隨著Java語(yǔ)言的快速發(fā)展,許多持久化框架也應(yīng)運(yùn)而生。iBatis和MyBatis是兩個(gè)備受歡迎的持久化框架,它們都提供了一種簡(jiǎn)單而高效的數(shù)據(jù)訪問(wèn)解決方案。本文將介紹iBatis和MyBatis的特點(diǎn)和優(yōu)勢(shì),并給出一些具體的代碼示例,幫助你選擇合適的框架。iBatis簡(jiǎn)介:iBatis是一個(gè)開(kāi)源的持久化框架

JPA和MyBatis:功能與性能對(duì)比分析引言:在Java開(kāi)發(fā)中,持久化框架扮演著非常重要的角色。常見(jiàn)的持久化框架包括JPA(JavaPersistenceAPI)和MyBatis。本文將對(duì)這兩個(gè)框架的功能和性能進(jìn)行對(duì)比分析,并提供具體的代碼示例。一、功能對(duì)比:JPA:JPA是JavaEE的一部分,提供了一種面向?qū)ο蟮臄?shù)據(jù)持久化解決方案。它通過(guò)注解或X

MyBatis動(dòng)態(tài)SQL標(biāo)簽解讀:Set標(biāo)簽用法詳解MyBatis是一個(gè)優(yōu)秀的持久層框架,它提供了豐富的動(dòng)態(tài)SQL標(biāo)簽,可以靈活地構(gòu)建數(shù)據(jù)庫(kù)操作語(yǔ)句。其中,Set標(biāo)簽是用于生成UPDATE語(yǔ)句中SET子句的標(biāo)簽,在更新操作中非常常用。本文將詳細(xì)解讀MyBatis中Set標(biāo)簽的用法,以及通過(guò)具體的代碼示例來(lái)演示其功能。什么是Set標(biāo)簽Set標(biāo)簽用于MyBati

MyBatis中實(shí)現(xiàn)批量刪除語(yǔ)句的幾種方式,需要具體代碼示例近年來(lái),由于數(shù)據(jù)量的不斷增加,批量操作成為了數(shù)據(jù)庫(kù)操作的一個(gè)重要環(huán)節(jié)之一。在實(shí)際開(kāi)發(fā)中,我們經(jīng)常需要批量刪除數(shù)據(jù)庫(kù)中的記錄。本文將重點(diǎn)介紹在MyBatis中實(shí)現(xiàn)批量刪除語(yǔ)句的幾種方式,并提供相應(yīng)的代碼示例。使用foreach標(biāo)簽實(shí)現(xiàn)批量刪除MyBatis提供了foreach標(biāo)簽,可以方便地遍歷一個(gè)集

iBatis和MyBatis是兩種主流的ORM(Object-RelationalMapping)框架,它們?cè)谠O(shè)計(jì)和使用上有著許多相似之處,也存在一些細(xì)微的差別。本文將詳細(xì)比較iBatis和MyBatis的異同,并通過(guò)具體的代碼示例來(lái)說(shuō)明它們的特點(diǎn)。一、iBatis與MyBatis的歷史和背景iBatis是ApacheSoftwareFoundat

MyBatis緩存機(jī)制詳解:一文讀懂緩存存儲(chǔ)原理引言在使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)時(shí),緩存是一個(gè)非常重要的機(jī)制,能夠有效減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),提高系統(tǒng)性能。本文將詳細(xì)介紹MyBatis的緩存機(jī)制,包括緩存的分類、存儲(chǔ)原理和具體的代碼示例。一、緩存的分類MyBatis的緩存主要分為一級(jí)緩存和二級(jí)緩存兩種。一級(jí)緩存一級(jí)緩存是SqlSession級(jí)別的緩存,當(dāng)在

MyBatisGenerator是MyBatis官方提供的一個(gè)代碼生成工具,可以幫助開(kāi)發(fā)人員快速生成符合數(shù)據(jù)庫(kù)表結(jié)構(gòu)的JavaBean、Mapper接口以及XML映射文件。在使用MyBatisGenerator進(jìn)行代碼生成的過(guò)程中,配置參數(shù)的設(shè)置是至關(guān)重要的。本文將從配置參數(shù)的角度出發(fā),深入探討MyBatisGenerator的

MyBatis是一款流行的Java持久層框架,廣泛應(yīng)用于各種Java項(xiàng)目中。其中,批量插入是一個(gè)常見(jiàn)的操作,可以有效提升數(shù)據(jù)庫(kù)操作的性能。本文將深入探討MyBatis中的批量Insert實(shí)現(xiàn)原理,并結(jié)合具體的代碼示例進(jìn)行詳細(xì)解析。MyBatis中的批量Insert在MyBatis中,批量Insert操作通常使用動(dòng)態(tài)SQL來(lái)實(shí)現(xiàn)。通過(guò)構(gòu)建一條包含多個(gè)插入值的S
