MyBatis幾種不同類型傳參的方式總結(jié)
MyBatis幾種不同類型傳參方式
在Web開發(fā)過程中,我們根據(jù)業(yè)務(wù)需求將不同類型參數(shù)從后臺傳入到MyBatis的各個不同的mapper命名空間中,包括有string類型,map類型,list集合類型,或者是直接傳入一個對象等。
1.String類型
1.1對于string類型,我們一般傳 在sql中寫明parameterType="string" ,例:
則在獲取參數(shù)時,如果是要進(jìn)行非null的判斷,則不可在if后直接那變量名進(jìn)行判空,因為mybatis會默認(rèn)變量名為_parameter,否則會報no getter/setter錯誤。正確的寫法如下:
上面情況是針對于string類型參數(shù)直接傳入,如果不想在判斷時使用,mybatis默認(rèn)的變量名,則需要在dao層后臺傳入時加上@Param
加上此注解,則在if判斷時,可以直接用變量名。
1.2 對于多個String類型的傳入,則無法使用Mybatis默認(rèn)的_parameterType。有兩種方式,第一是同上在dao層使用@Param注解:
在mybatis中可以直接將此作為變量名判斷和使用
第二種方式是使用位置索引的方式來獲取變量:
2.對于傳入Map參數(shù)類型
則需要 寫明 parameterType="map"
則可以在mybatis的sql語句中,直接取key作為傳入?yún)?shù)的變量名,value即為對應(yīng)的變量值,一般要傳入多個string類型的參數(shù)時,可以放在一個map中傳入mybatis。
3.傳入的參數(shù)類型為list
若傳入的是一個list<String>,則先進(jìn)行判斷是否為空,然后進(jìn)行遍歷該數(shù)組
若傳入的是list<Map>,將其作為select語句的where條件時,進(jìn)行遍歷
4.傳入對象
傳入對象作為參數(shù),首先是要定義一個Pojo類。
將該類的屬性,都加上get/set方法,然后將要傳遞的參數(shù)進(jìn)行set賦值后進(jìn)行傳入,在xml的sql語句中可以直接取對象的屬性名稱作為參數(shù)名:如下所示是一個User類的部分代碼:
從而完成了User的更新操作
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合Flyway的方法(數(shù)據(jù)庫版本遷移工具)
這篇文章主要介紹了SpringBoot整合Flyway的方法(數(shù)據(jù)庫版本遷移工具),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06MyBatis通用Mapper中的通用example(排序)詳解
這篇文章主要介紹了MyBatis通用Mapper中的通用example(排序)詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12