Mapper 中 與 的區別

2021-08-14 18:39:24 字數 970 閱讀 3637

1 #是將傳入的值當做字串的形式,eg:select id,name,age from student where id =#,當前端把id值1,傳入到後台的時候,就相當於 select id,name,age from student where id ='1'.

2 $是將傳入的資料直接顯示生成sql語句,eg:select id,name,age from student where id =$,當前端把id值1,傳入到後台的時候,就相當於 select id,name,age from student where id = 1.

3 使用#可以很大程度上防止sql注入。(語句的拼接)

4 但是如果使用在order by 中就需要使用 $.

5 在大多數情況下還是經常使用#,但在不同情況下必須使用$. 

我覺得#與的區別最大在於:#{} 傳入值時,sql解析時,引數是帶引號的,而

的區別最大在於:#{} 傳入值時,sql解析時,引數是帶引號的,而

{}穿入值,sql解析時,引數是不帶引號的。

一 : 理解mybatis中 $與#

在mybatis中的$與#都是在sql中動態的傳入引數。

eg:select id,name,age from student where name=#  這個name是動態的,可變的。當你傳入什麼樣的值,就會根據你傳入的值執行sql語句。

二:使用$與#

#{}: 解析為乙個 jdbc 預編譯語句(prepared statement)的引數標記符,乙個 # 被解析為乙個引數佔位符 。

${}: 僅僅為乙個純碎的 string 替換,在動態 sql 解析階段將會進行變數替換。

name-->cy

eg:  select id,name,age from student where name=#   -- name='cy'

select id,name,age from student where name=$    -- name=cy

Repository和 Mapper的區別

repository是spring的註解 description field userservice in com.example.demo.three.controller.usercontroller required a bean of type com.example.demo.three....

mapper對映檔案 和 的區別

常用 select id,name,age from student where id 傳入數值為1,會解析成字串格式 select id,name,age from student where id 1 常用於引數傳遞 解析為乙個 jdbc 預編譯語句 prepared statement 的引數...

Mybatis的Mapper與sql引數傳遞

1.簡單型別 只有乙個引數 select id,role name,note fron t role where id public role getrole interger id 這裡的 的 id 可以是任意值,但一般與傳入的引數形參相同,方便理解 2.傳入引用變數 insert into t ...