
目錄
- 前言
- 單個參數
- 多個參數
- 使用索引【不推薦】
- 使用@Param
- 使用Map
- POJO【推薦】
- List傳參
- 數組傳參
- 總結
前言
- 前幾天恰好面試一個應屆生,問了一個很簡單的問題:你了解過Mybatis中有幾種傳參方式嗎?
- 沒想到其他問題回答的很好,唯獨這個問題一知半解,勉強回答了其中兩種方式。
- 于是這篇文章就來說一說Mybatis傳參的幾種常見方式,給正在面試或者準備面試的朋友鞏固一下。
單個參數
- 單個參數的傳參比較簡單,可以是任意形式的,比如
、#{a}
或者#{b}
,但是為了開發規範,盡量使用和入參時一樣。#{param1}
- Mapper如下:
- XML如下:
多個參數
- 多個參數的情況下有很多種傳參的方式,下面一一介紹。
使用索引【不推薦】
- 多個參數可以使用類似于索引的方式傳值,比如
對應第一個參數,#{param1}
對應第二個參數.......#{param2}
- Mapper方法如下:
- XML如下:
- 注意:由于開發規範,此種方式不推薦開發中使用。
使用@Param
-
這個注解用于指定key,一旦指定了key,在SQL中即可對應的key入參。@Param
- Mapper方法如下:
- XML如下:
使用Map
- Mybatis底層就是将入參轉換成
,入參傳Map當然也行,此時Map
中的#{key}
就對應Map中的key
。key
- Mapper中的方法如下:
- XML如下:
- 測試如下:
@Test
void contextLoads() {
Map map=new HashMap<>();
map.put("userId","1222");
map.put("status",1);
UserInfo userInfo = userMapper.selectByUserIdAndStatusMap(map);
System.out.println(userInfo);
}
POJO【推薦】
- 多個參數可以使用實體類封裝,此時對應的
就是屬性名稱,注意一定要有key
方法。get
- Mapper方法如下:
- XML如下:
- 實體類如下:
List傳參
- List傳參也是比較常見的,通常是SQL中的
。in
- Mapper方法如下:
- XML如下:
數組傳參
- 這種方式類似List傳參,依舊使用
文法。foreach
- Mapper方法如下:
- XML如下:
總結
- 以上幾種傳參的方式在面試或者工作中都會用到,不了解的朋友可以收藏下。
- Mybatis專題文章寫到這裡也算是到了尾聲,後期準備再寫寫Mybatis的面經,如果覺得作者寫的不錯,歡迎關注分享。
點個在看支援我吧,轉發就更好了