- 方法一:顺序传参,不常用
- 方法二:@Param传参:就是给顺序传参里面的参数命名,sql层表达更直观
public User selectUser(@Param("userName") String name, int @Param("deptId") deptId);
<select id="selectUser" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
这种传参一般会是路径传参,只传ID的情况比较多,这时候一般会在形参那写上@PathVariable("id") Long id ,用@PathVariable一般是service或者Controller层了,Mapper中一般使用@Param
- 方法三:Map传参法
public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
这种方法#{}写的是Map的Key名称。这种方法适合传递多个参数,且参数易变能灵活传递的情况。
- 方法四:Java Bean传参数
public User selectUser(User user);
<select id="selectUser" parameterType="com.jourwon.pojo.User" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
这种方法很常用,在真实项目里。往往会根据一些查询条件再建立一个query对象。这个query对象可以继承PageQuery对象,PageQuery是PageHelper的使用对象。
这种方法往往会在形参那里加上@RequestBody,为什么有待考察。Service层比较多用这个注解。
参考:
(11条消息) MyBatis面试题(2020最新版)_ThinkWon的博客-CSDN博客_mybatis面试题