在项目中定义Mapper方法时,有时可能会传多个不同类型的参数,比如像下面这个Mapper方法,这个时候应该如何进行配置呢?
List findUserRole(Integer userId, String roleName);
方法一
不设置parameterType参数,直接使用#{index}
来指定参数,索引从0开始。
select * from user_role where user_id= #{0} and role_name= #{1}
方法二
使用@Param
注解进行指定,推荐使用。
Mapper方法
List findUserRole(@Param("userId") Integer userId,
@Param("roleName") String roleName);
SQL配置文件
select * from user_role where user_id= #{userId} and role_name= #{roleName}
方法三
使用Map进行封装,Map中的key的值就是参数的名称。
Mapper方法
List findUserRole(HashMap paramMap);
SQL配置文件
select * from user_role where user_id= #{userId} and role_name= #{roleName}
方法四
使用List封装,在SQL配置文件中使用foreach遍历参数。
Mapper方法
List findUserRole(List paramList);
SQL配置文件
select * from user_role where user_id in
#{item}
总结
方法三和方法四资源消耗远大于方法一和方法二,一般推荐使用方法一和方法二。