@RequestParam和@Param的区别

一、@RequestParam

@RequestParam是SpringMVC中的一个常用注解,这个注解通常用在Controller层使用,标注在Controller层方法的参数上,用来解决前端与后端参数不一致的问题。@RequestParam将请求参数和控制器方法的形参创建映射关系。

@RequestParam注解一共有三个属性:
(1)value:指定为方法形参赋值的请求参数的参数名

(2)required:设置是否必须传输此请求参数,默认值为true
若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400:Required String parameter 'xxx' is not present;
若设置为 false时,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为 null

(3)defaultValue:为当前形参设置默认值,不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为 "" 时,则使用默认值为当前形参赋值
 

二、@Param

@Param是Mybatis中的一个常用注解,该注解标注在dao接口中的方法参数上,用来简化xml配置的时候(比如Mybatis的Mapper.xml中的sql参数注入),@Param注解的作用是给参数命名,参数命名后就可以通过 #{xxx} 的形式注入sql语句中(xxx为@Param给参数设置的名称)。@Param注解是为了dao接口的方法参数和配置文件sql语句的参数保持变量名的一致性。

举例:

dao接口中的方法:

public User selectUser(@Param("userName") String name,@Param("password") String pwd);

映射到xml中的<select>标签:

<select id="selectUser" resultMap="User">  
   select * from user  where user_name = #{userName} and user_password=#{password}  
</select>