首頁 > 軟體

MyBatis幾種不同型別傳參的方式總結

2022-12-23 14:01:10

MyBatis幾種不同型別傳參方式

在Web開發過程中,我們根據業務需求將不同型別引數從後臺傳入到MyBatis的各個不同的mapper名稱空間中,包括有string型別,map型別,list集合型別,或者是直接傳入一個物件等。

1.String型別

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

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

上面情況是針對於string型別引數直接傳入,如果不想在判斷時使用,mybatis預設的變數名,則需要在dao層後臺傳入時加上@Param

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

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

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

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

2.對於傳入Map引數型別

則需要 寫明 parameterType="map"

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

3.傳入的引數型別為list

若傳入的是一個list<String>,則先進行判斷是否為空,然後進行遍歷該陣列

若傳入的是list<Map>,將其作為select語句的where條件時,進行遍歷

4.傳入物件

傳入物件作為引數,首先是要定義一個Pojo類。

將該類的屬性,都加上get/set方法,然後將要傳遞的引數進行set賦值後進行傳入,在xml的sql語句中可以直接取物件的屬性名稱作為引數名:如下所示是一個User類的部分程式碼:

從而完成了User的更新操作

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com