mybatis中的#和$的區(qū)別
1. #將傳入的資料都當(dāng)成一個(gè)字串,會(huì)對(duì)自動(dòng)傳入的資料加一個(gè)雙引號(hào)。如:order by #user_id#,如果傳入的值是111,那麼解析成sql時(shí)的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
2. $將傳入的資料直接顯示產(chǎn)生在sql中。如:order by $user_id$,如果傳入的值是111,那麼解析成sql時(shí)的值為order by user_id,? 如果傳入的值是id,則解析成的sql為order by id.
3. #方式能夠很大程度防止sql注入。
4.$方式無(wú)法防止Sql注入。
5.$方式一般用於傳入資料庫(kù)對(duì)象,例如傳入表名.
6.一般能用#的就別用$.
防止Sql注入
注意:聲明語(yǔ)句不要寫(xiě)成selectse from t_stu where s_name like '%$name$%',這樣極易受到注入攻擊。
”${xx??x}”這樣格式的參數(shù)會(huì)直接參與sql編譯,因此無(wú)法避免注入攻擊。但涉及動(dòng)態(tài)表名和列名時(shí),只能使用「${xxx}」這樣的參數(shù)格式。
在編寫(xiě)mybatis的映射語(yǔ)句時(shí),盡量採(cǎi)用「#{xxx}」這樣的格式。若不得不使用「${xxx}」這樣的參數(shù),要手工地做好過(guò)濾工作,以防止sql注入攻擊。
例子
<sql id="condition_where"> <isNotEmpty property="companyName" prepend=" and "> t1.company_name like #companyName# </isNotEmpty> </sql>
? ?
java程式碼和你原來(lái)的差不多,其實(shí)沒(méi)什麼不好,你要覺(jué)得麻煩把
以上就是小編為大家?guī)?lái)的淺談mybatis中的#和$的區(qū)別以及防止sql注入的方法全部?jī)?nèi)容了,希望大家多多支持PHP中文網(wǎng)~
更多淺談mybatis中的#和$的區(qū)別以及防止sql注入的方法相關(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脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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)

MyBatis動(dòng)態(tài)SQL標(biāo)籤解讀:Set標(biāo)籤用法詳解MyBatis是一個(gè)優(yōu)秀的持久層框架,它提供了豐富的動(dòng)態(tài)SQL標(biāo)籤,可以靈活地建構(gòu)資料庫(kù)操作語(yǔ)句。其中,Set標(biāo)籤是用來(lái)產(chǎn)生UPDATE語(yǔ)句中SET子句的標(biāo)籤,在更新作業(yè)中非常常用。本文將詳細(xì)解讀MyBatis中Set標(biāo)籤的用法,以及透過(guò)具體的程式碼範(fàn)例來(lái)示範(fàn)其功能。什麼是Set標(biāo)籤Set標(biāo)籤用於MyBati

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

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

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

MyBatis是一個(gè)流行的Java持久層框架,透過(guò)XML或註解的方式實(shí)現(xiàn)SQL與Java方法的映射,提供了許多方便的操作資料庫(kù)的功能。在實(shí)際開(kāi)發(fā)中,有時(shí)需要批量插入大量資料到資料庫(kù)中,因此,如何優(yōu)化MyBatis中批量Insert語(yǔ)句成為一個(gè)重要的問(wèn)題。本文將分享一些優(yōu)化技巧,並提供具體的程式碼範(fàn)例。 1.使用BatchExecu

隨著網(wǎng)路技術(shù)的不斷發(fā)展,資料庫(kù)攻擊也變得越來(lái)越普遍。 SQL注入是其中常見(jiàn)的攻擊方式,攻擊者透過(guò)在輸入框中輸入惡意SQL語(yǔ)句來(lái)執(zhí)行非法操作,造成資料外洩、竄改甚至刪除。為了防範(fàn)SQL注入攻擊,開(kāi)發(fā)人員在編寫(xiě)程式碼時(shí)要特別注意,而在使用MyBatis這樣的ORM框架時(shí),更是需要遵循一些最佳實(shí)踐來(lái)確保系統(tǒng)的安全性。 1.參數(shù)化查詢參數(shù)化查詢是防

MyBatis批量刪除語(yǔ)句的使用方法詳解,需要具體程式碼範(fàn)例引言:MyBatis是一款優(yōu)秀的持久層框架,提供了豐富的SQL操作功能。在實(shí)際專案開(kāi)發(fā)中,經(jīng)常會(huì)遇到需要大量刪除資料的情況。本文將詳細(xì)介紹MyBatis批量刪除語(yǔ)句的使用方法,並附上具體的程式碼範(fàn)例。使用場(chǎng)景:在資料庫(kù)中刪除大量資料時(shí),逐條執(zhí)行刪除語(yǔ)句效率低。此時(shí),可以使用MyBatis的批次刪除功能

MyBatis是一個(gè)輕量級(jí)的Java持久層框架,它提供了許多方便的SQL語(yǔ)句拼接功能,其中的動(dòng)態(tài)SQL標(biāo)籤是其強(qiáng)大之處之一。在MyBatis中,Trim標(biāo)籤是一種很常用的標(biāo)籤,用來(lái)動(dòng)態(tài)地拼接SQL語(yǔ)句。在本文中,我們將深入了解MyBatis中的Trim標(biāo)籤的功能,並提供一些具體的程式碼範(fàn)例。 1.Trim標(biāo)籤簡(jiǎn)介在MyBatis中,Trim標(biāo)籤用於去除生成的S
