
目录
- 前言
- 单个参数
- 多个参数
- 使用索引【不推荐】
- 使用@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的面经,如果觉得作者写的不错,欢迎关注分享。
点个在看支持我吧,转发就更好了