Mybatis的幾種傳參方式詳解

2022-10-06 02:48:09 字數 1664 閱讀 6704

前言

單個pttzndv引數

單個引數的傳參比較簡單,可以是任意形式的,比如#、#或者#,但是為了開發規範,盡量使用和入參時一樣。

mapper如下:

userinfo selectbyuserid(string userid);

xml如下:

select * from user_info where user_id=# and status=1

多個引數

多個引數的情況下有很多種傳參的方式,下面一一介紹。

使用索引【不推薦】

userinfo selectbyuseridandstatus(string userid,integer status);

xml如下:

select * from user_info where user_id=# and status=#

注意:由於開發規範,此種方式不推薦開發中使用。

使用@param

@param這個註解用於指定key,一旦指定了key,在sql中即可對應的key入參。

mapper方法如下:

userinfo selectbyuseridandstatus(@param("userid") string userid,@param("status") integer status);

xpttzndvml如下:

select * from user_info where user_id=# and status=#

使用map

mybatis底層就是將入參轉換成map,入參傳map當然也行,此時#中的key就對應map中的key。

mapper中的方法如下:

userinfo selectbyuseridandstatusmap(map map);

xml如下:

select * from user_info where user_id=# and status=#

測試如下:

@test

void contextloads()

pojo【推薦】

多個引數可以使用實體類封裝,此時對應的key就是屬性名稱,注意一定要有get方法。

mapper方法如下:

userinfo selectbyentity(userinforeq userinforeq);

xml如下:

select * from user_info where user_id=# and status=#

實體類如下:

@data

public class userinforeq

list傳參

list傳參也是比較常見的,通常是sql中的in。

mapper方法如下:

list selectlist( list userids);

xml如下:

select * from user_info where status=1

and user_id in

#陣列傳參

這種方式類似list傳參,依舊使用foreach語法。

mapper方法如下:

list selectlist( string userids);

xml如下:

select * from user_info where status=1

and user_id in#總結

mybatis傳參的幾種方式

1,param 參考文章 select select s id id,s name name,class id classid from student where s name and class id publicstudent select param aaaa string name,par...

Mybatis傳參方式

mybatis傳多個引數 三種解決方案 據我目前接觸到的傳多個引數的方案有三種。第一種方案 dao層的函式方法 1public user selectuser string name,string area 123select from user user t where user name and...

Mybatis傳參方式總結

mybatis 在對 sql 語句進行預編譯之前,會對 sql 進行動態解析,解析為乙個 boundsql 物件,也是在此處對動態 sql 進行處理的。在動態 sql 解析階段,和 會有不同的表現 select from user where name 在動態解析的時候,會解析成乙個引數標記符。就是...