#{}佔位符用來設定引數,引數的型別可以有3種,基本型別,自定義型別,map基本型別作為引數,引數與佔位符中的名稱無關。
select * from t_role where id = #測試:
@test自定義型別作為引數,自定義類中需要為為屬性提供get方法,如果沒有提供get方法,那麼會根據佔位符中的名稱去反射獲取值,如果佔位符中的名稱和屬性不一致,那麼報reflectionexception。public void testselectone()
select * from t_role limit #,#測試:
@testmap作為引數型別,key和佔位符中的名稱一致即可,如果名稱不一致那麼將會把null,傳遞到佔位符中。public void testpage1()
}
注意:#{}佔位符不能解決一下 3 類問題:
表名是動態的: select * from #
列名是動態的:select # from t_role
排序列是動態的: select * from t_role order by #
${}佔位符是字串連線符,可以用來動態設定表明,列名,排序名 ${}引數不能為基本資料型別,只能為自定義型別和map
select * from $測試:
@test作為連線符使用:public void testselectlist()
}
select *from t_role where name like '$%';測試:
@testpublic void testlike2()
}
Mybatis佔位符 與佔位符 區別
速度快,能防止sql注入,是佔位符方式,先預編譯,然後填充引數,字串格式,使用者名稱 引數只是下劃線上的內容 是直接拼接到語句上,這種方式需要自己拼括號和引數,但是也可以拼接想執行的任何語句,也就是傳說中的sql注入 詳情如下 在mybatis中使用引數進行sql拼裝經常會使用到 和 兩種引數的設定...
mybatis拼接符和佔位符的區別
佔位符 1.佔位符可以用來設定引數,如果傳進來的是基本型別,也就是 string,long,double,int,boolean,float等 那麼 裡面的變數名可以隨意寫,什麼abc,等等,這個名字和傳進來的引數名可以不一致。2.如果傳進來的是pojo型別,那麼 中的變數名必須是pojo的屬性名,...
Mybatis的引數佔位符
mybatis支援引數佔位符 不過和jdbc的不同,jdbc是?而mybatis對於字元引數和非 字元引數提供了兩種不同的引數佔位符,非字元使用 而字元型別的引數則要使用 當使用模糊查詢的時候,如果我們要使用引數佔位符,那麼必須要使用 的形式,因為模糊查詢的時候,我們的引數是字元型別的 而 引數佔位...