在Web開發過程中,我們根據業務需求将不同類型參數從背景傳入到MyBatis的各個不同的mapper命名空間中,包括有string類型,map類型,list集合類型,或者是直接傳入一個對象等。
1.String類型
1.1對于string類型,我們一般傳 在sql中寫明parameterType="string" ,例:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SO3kzN5ADZzEzM3IWZkFmMzYzXxUTM1cTMxIzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
則在擷取參數時,如果是要進行非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類的部分代碼: