天天看點

MyBatis 傳參類型總結

在Web開發過程中,我們根據業務需求将不同類型參數從背景傳入到MyBatis的各個不同的mapper命名空間中,包括有string類型,map類型,list集合類型,或者是直接傳入一個對象等。

1.String類型

   1.1對于string類型,我們一般傳 在sql中寫明parameterType="string" ,例:

MyBatis 傳參類型總結

則在擷取參數時,如果是要進行非null的判斷,則不可在if後直接那變量名進行判空,因為mybatis會預設變量名為_parameter,否則會報no getter/setter錯誤。正确的寫法如下:

MyBatis 傳參類型總結

上面情況是針對于string類型參數直接傳入,如果不想在判斷時使用,mybatis預設的變量名,則需要在dao層背景傳入時加上@Param

MyBatis 傳參類型總結

加上此注解,則在if判斷時,可以直接用變量名。

1.2 對于多個String類型的傳入,則無法使用Mybatis預設的_parameterType。有兩種方式,第一是同上在dao層使用@Param注解:

MyBatis 傳參類型總結

在mybatis中可以直接将此作為變量名判斷和使用

MyBatis 傳參類型總結

第二種方式是使用位置索引的方式來擷取變量:

2.對于傳入Map參數類型:則需要 寫明 parameterType="map"

則可以在mybatis的sql語句中,直接取key作為傳入參數的變量名,value即為對應的變量值,一般要傳入多個string類型的參數時,可以放在一個map中傳入mybatis。

MyBatis 傳參類型總結

3.傳入的參數類型為list。 若傳入的是一個list<String>,則先進行判斷是否為空,然後進行周遊該數組

MyBatis 傳參類型總結

若傳入的是list<Map>,将其作為select語句的where條件時,進行周遊

MyBatis 傳參類型總結

4.傳入對象

傳入對象作為參數,首先是要定義一個Pojo類。将該類的屬性,都加上get/set方法,然後将要傳遞的參數進行set指派後進行傳入,在xml的sql語句中可以直接取對象的屬性名稱作為參數名:如下所示是一個User類的部分代碼:

MyBatis 傳參類型總結