parametertype:可以是別名或者全限定名,他接受簡單型別pojo,hashmap。
1.1 簡單型別。
select id="finduserbyid" parametertype="int"resulttype="user">
select * from user where id =#
1.2 傳遞pojo包裝物件。
(當乙個查詢的查詢條件來自多個物件時,可能要對查詢條件做封裝)做為最終的查詢條件
1.2.1 vo
publicclass userext extends user
publicclass userqueryvo
public void setuserext(userext userext)
}
1.2.2 介面
//通過包裝類來進行複雜的使用者資訊綜合查詢
public listfinduserlist(userqueryvouserqueryvo);
1.2.3 配置檔案
select * from user where ***=# and usernamelike '%$%'
1.2.4 測試
@test
publicvoid finduserlisttest()
1.3 傳遞hashmap。
同傳遞pojo物件一樣,map
的key
相當於pojo
的屬性。
1.3.1 對映檔案
select * from user where id=# and username like '%$%'
1.3.2 測試**
public void testfinduserbyhashmap()throw***ception
resultype對映:
查詢出的列名與
pojo
完全一致,才能對映成功
如果查詢出的列名與
pojo
完全不一致,則不會建立
pojo
只要查詢出的列名有一列與
pojo
一致,就會建立
pojo物件
2.1 輸出簡單型別
當輸出結果只有一列時,可以使用resulttype指定簡單型別,作為輸出型別
2.1.1 xml
select count(1) from user where*** = # and username like'%$%'
public int finduserscount(userqueryvo vo);
2.1.3 測試類
@test
publicvoidtestfinduserscount()
2.2 輸出pojo型別
注意:輸出單個
pojo
物件和pojo
列表(盛放
pojo
物件)時,
對映檔案中的
resulttype
的型別是一樣的,
介面的方法返回值不同。
2.2.1 xml檔案
select * from user where username like '%$%'
2.2.2.1 輸出單個pojo物件
//根據使用者名稱來模糊查詢使用者資訊
public userfindusersbyname(string username);
2.2.2.2 輸出pojo列表
//根據使用者名稱來模糊查詢使用者資訊列表
public listfindusersbyname(string username);
總結:同樣的
對映檔案,返回單個物件和物件列表時,
介面在生成動態**的時候,會根據返回值的型別,決定呼叫selectone
方法還是
selectlist
方法。
2.3 輸出resultmap型別
進行高階結果對映時作為輸出,如果查詢出來的列名和屬性名不一致,通過定義乙個resultmap將列名和pojo屬性名之間作乙個對映關係。
1、 定義resultmap
2、 使用resultmap作為statement的輸出對映型別。
2.3.1 xml檔案的定義
select id id_,usernameusername_,*** ***_ from user where id = #
2.3.2 定義介面
//根據id查詢使用者資訊(學習resultmap)
public user finduserbyidresultmap(int id);
對映檔案中
resultmap
的type
型別。2.3.3 測試**
@test
publicvoid finduserbyidresultmaptest()
3.1 if標籤與where
做為入參的判斷條件來用的,如果符合條件則拼接上
where標籤,會去除條件中的and符號
3.1.1. xml檔案
select * from user
and *** = #
and username like '%$%'
select count(1) from user
and *** = #
and username like '%$%'
//通過包裝類來進行複雜的使用者資訊綜合查詢
public listfinduserlist(userqueryvouserqueryvo);
//綜合查詢使用者總數
public int finduserscount(userqueryvo userqueryvo);
@test
publicvoid testfinduserlist() throw***ception
3.2 sql片段,可以去除重複的sql的編寫
and username like '%$%'
and *** = #
and id in
#使用來引用sql片段:
select * from user
select count(1) from user
3.3 foreach
向sql傳遞陣列或list時,mybatis使用foreach解析陣列裡的引數並拼接到sql中。
需求:根據使用者id列表查詢使用者
select * from user where id in (1,10,16)
3.3.1 vo物件
public class userqueryvo
publiclistgetidlist()
publicuserext getuserext()
publicvoid setuserext(userext userext)
}
3.3.2 xml對映檔案
一般來說防止(括號
一般來說防止)括號
0">
#
//根據使用者id的集合查詢使用者列表(學習foreach標籤之通過pojo物件傳id集合)
public listfinduserlist(userqueryvo vo);
3.3.4 測試類
@test
publicvoid testfinduserlist()
使用者id的集合查詢使用者列表(學習foreach標籤之直接傳id集合)
public listfindusersbyidlist (listidlist);
3.3.7 測試類@test
publicvoid findusersbyidlisttest()
結果類封裝 AjaxResult
封裝的比較通用的返回結果類,感覺如果有其他額外需求再往裡加屬性個get set 方法就行 public class ajaxresult public void setcode integer code public ajaxresult boolean success public ajaxres...
Struts2 結果和結果型別
正如前面提到的,標籤在struts2的mvc框架的檢視中所扮演的角色。動作是負責執行業務邏輯。執行業務邏輯後,接下來的步驟是使用標籤顯示的檢視。經常有一些附帶導航規則的結果。例如,如果在操作方法是對使用者進行驗證,有三種可能的結果。一 成功登入 二 不成功的登入,使用者名稱或密碼錯誤 三 帳戶鎖定。...
struts2 result type 結果型別
在struts2框架中,當action處理完之後,就應該向使用者返回結果資訊,該任務被分為兩部分 結果型別和結果本身。結果型別提供了返回給使用者資訊型別的實現細節。結果型別通常在struts2中就已預定義好了 見下表 或者是由外掛程式提供,開發人員也可以自定義結果型別。預設配置的結果型別是dispa...