#:取出引數值。
封裝成 乙個map,
key:param1...paramn,或者引數的索引也可以
value:傳入的引數值
#{}就是從map中獲取指定的key的值;
封裝在map中。
key:collection(collection)| list(list)| 陣列(array)
value:傳入的引數值
public employee getempbyid(listids);
取值:取出第乙個id的值: #
多個引數會被封裝成 乙個map,
key:使用@param註解指定的值
value:引數值
#取出對應的引數值
public employee getemployeeid2
(@param
("id"
) integer id,
@param
("name"
) string name)
;
如果多個引數正好是我們業務邏輯的資料模型,我們就可以直接傳入pojo
#:取出傳入的pojo的屬性值
介面方法(後面部分省略)
public
boolean
insertemployee
(employee employee)
;
如果多個引數不是業務模型中的資料,沒有對應的pojo,不經常使用,為了方便,我們也可以傳入map
#:取出map中對應的值
介面方法
public employee getemployeeid3
(map
map)
;
"getemployeeid3" resulttype=
"bean.employee" databaseid=
"mysql"
>
select * from employee where id = # and name=#
<
/select>
test中的使用
map
map =
newhashmap
<
>()
;map.
put(
"id",1
);map.
put(
"name"
,"litao");
getemployeeid3
(map)
;system.out.
println
(employee)
;
如果多個引數不是業務模型中的資料,但是經常要使用,推薦來編寫乙個to(transfer object)資料傳輸物件
select * from employee where id=$ and name=#
preparing: select * from employee where id=
1 and name=
?
#{}:(大多數使用)是以預編譯的形式,將引數設定到sql語句中;同preparedstatement可以防止sql注入
${}:(特別需求時使用)取出的值直接拼裝在sql語句中;會有安全問題;
原生jdbc不支援佔位符的地方我們就可以使用${}進行取值
比如分表、排序。。。;按照年份分表拆分 select * from $_salary where ***;
jdbctype通常需要在某種特定的條件下被設定:
在我們資料為null的時候,oracle資料庫不能識別mybatis對null的預設處理。
由於mybatis對所有的null都對映的是原生jdbc的other型別,oracle不能正確處理;
兩種解決辦法:
1、(#{}中)#
2、(全域性配置中)
單個引數:_parameter就是這個引數
多個引數:引數會被封裝為乙個map,_parameter就是代表這個map
_databaseid就是代表當前資料庫的別名oracle
MyBatis引數處理
1 單個引數 mybatis不做任何特殊處理 2 多個引數 mybatis會做特殊處理 多個引數會被封裝成乙個map,key param1 paramn 或者引數索引 0,1.也可以 3 命名引數 明確指定封裝引數時map的key param 4 封裝成pojo 5 直接傳map集合 6 如果是co...
Mybatis(六)引數處理
在下面的語句中,如果 username 的值為 zhangsan,則兩種方式無任何區別 select from user where name select from user where name 其解析之後的結果均為 select from user where name zhangsan 但是...
Mybatis(3) 引數處理
單個引數 mybatis不會做特殊處理,取出引數值。多個引數 mybatis會做特殊處理。多個引數會被封裝成 乙個map,key param1.paramn,或者引數的索引也可以 value 傳入的引數值 就是從map中獲取指定的key的值 命名引數 明確指定封裝引數時map的key param i...