1、單個引數
public emp getemp(integer id);
取值:id==>#
select * from tbl_employee where id = #
2、多個引數
(1).public emp getemp(integer id,string lastname);
取值:id==>#,lastname==>#
select * from tbl_employee where id = # and last_name = #
(2).public employee getempbyidandlastname(@param("id")integer id,@param("lastname")string lastname);
取值:id==>#,lastname==>#
select * from tbl_employee where id = # and last_name = #
(3).public emp getemp(@param("id")integer id,string lastname);
取值:id==>#或者#,lastname==>#
select * from tbl_employee where id = # and last_name = #
(4).public emp getemp(integer id,@param("e")string lastname);
取值:id==>#,lastname==>#或者#
select * from tbl_employee where id = # and last_name = #
##特別注意:如果是collection(list,set)型別或者陣列,是把傳入的list或者陣列封裝在map中。
key: collection(collection),如果是list還可以用key(list)陣列(array)
public emp getempbyid(list ids);
取值:取出第乙個id的值,#
**********==結合原始碼,理解一下**********==
引數只有乙個的時候,就拿第乙個。這樣#取什麼名無所謂。
引數為多個,就會把所有的引數放在map中,可以用@param來指定map的key。
#{}可以獲取map中的值或者pojo物件的屬性的值;
${}可以獲取map中的值或者pojo物件的屬性的值;
區別:#{}是以預編譯的形式,將引數設定到sql語句中;${}取出的值直接拼在sql語句中,會有安全問題。
大多數情況下,取引數用#{}。
原生sql不支援佔位符的地方,使用${}取值。比如分表:select * 某個表名,排序的字段值,order by 字段值等只能用${}。
**********====jdbctype*****=
由於全域性變數中:jdbctypefornull = other;oracle不支援這個,所以會報錯「無效列型別」jdbctype:other;
解決辦法兩種:1.在# 2.在全域性變數中
mybatis呼叫儲存過程獲得取返回值
文章目錄 前言 一 service層 二 dao層 三 map.xml 總結mybatis呼叫儲存過程的一種寫法記錄 override public returnmsg checkonlinebookout mapparam param mapparams new hashmap params.pu...
mybatis中文條件查詢時,不返回值
解決方案如下 一 資料庫安裝後,編碼沒設定,設定成utf 8就好了,修改配置檔案,最簡單的完美修改方法,修改mysql的my.cnf檔案中的字符集鍵值 注意配置的字段細節 1 在 client 欄位裡加入default character set utf8,如下 1 2 3 4 client por...
mybatis批量查詢
今天在用mybatis寫乙個查詢操作,需求是根據userid去查表查出其使用者名稱username,返回使用者名稱username與userid即可。由於可能包含多個userid,因此把userid的值封裝到map中,再把map新增的list裡。public list findusername st...