mybaties輸入引數,結果型別,動態sql整理

2021-08-13 23:56:27 字數 4415 閱讀 7512

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...