mybatis 之 佔位符 和

2021-09-08 13:42:11 字數 940 閱讀 9858

#{}佔位符用來設定引數,引數的型別可以有3種,基本型別,自定義型別,map基本型別作為引數,引數與佔位符中的名稱無關。

select * from t_role where id = #

測試:

@test

public void testselectone()

自定義型別作為引數,自定義類中需要為為屬性提供get方法,如果沒有提供get方法,那麼會根據佔位符中的名稱去反射獲取值,如果佔位符中的名稱和屬性不一致,那麼報reflectionexception。

select * from t_role limit #,#

測試:

@test

public void testpage1()

}

map作為引數型別,key和佔位符中的名稱一致即可,如果名稱不一致那麼將會把null,傳遞到佔位符中。

注意:#{}佔位符不能解決一下 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 '$%';

測試:

@test

public void testlike2()

}

Mybatis佔位符 與佔位符 區別

速度快,能防止sql注入,是佔位符方式,先預編譯,然後填充引數,字串格式,使用者名稱 引數只是下劃線上的內容 是直接拼接到語句上,這種方式需要自己拼括號和引數,但是也可以拼接想執行的任何語句,也就是傳說中的sql注入 詳情如下 在mybatis中使用引數進行sql拼裝經常會使用到 和 兩種引數的設定...

mybatis拼接符和佔位符的區別

佔位符 1.佔位符可以用來設定引數,如果傳進來的是基本型別,也就是 string,long,double,int,boolean,float等 那麼 裡面的變數名可以隨意寫,什麼abc,等等,這個名字和傳進來的引數名可以不一致。2.如果傳進來的是pojo型別,那麼 中的變數名必須是pojo的屬性名,...

Mybatis的引數佔位符

mybatis支援引數佔位符 不過和jdbc的不同,jdbc是?而mybatis對於字元引數和非 字元引數提供了兩種不同的引數佔位符,非字元使用 而字元型別的引數則要使用 當使用模糊查詢的時候,如果我們要使用引數佔位符,那麼必須要使用 的形式,因為模糊查詢的時候,我們的引數是字元型別的 而 引數佔位...