@param和@RequestParam区别
我的理解:
个人以为当初的设计目的只是为了解决开发人员之间命名不一致的问题
@Param就是Mapper/Repository层,为了解决mybatis字段与在后端Java字段不一致的情况,相当于解决后端名字间的映射关系
@RequestParam就是Controller层,为了解决前端(表单提交)传入后端数据与在后端Java字段不一致的情况,相当于解决前端名字间的映射关系
当然现在这些注解还有一些其他功能:
@RequestParam有三个配置参数:
required
表示是否必须,默认为true
,必须。defaultValue
可设置请求参数的默认值。value
为接收url的参数名(相当于key值)。
换句话说就是可以默认设置一个默认值或空‘
@Param
另外MyBatis还提供了一个使用注解来参入多个参数的方式。这种方式需要在接口的参数上添加@Param注解
/**
* 此处要注意的是,由于该方法需要传入多个参数,在进行Mybatis配置时,
* 没有办法同时配置多个参数,另外MyBatis还提供了一个使用注解来参入
* 多个参数的方式。这种方式需要在接口的参数上添加@Param注解。。
* 注意,以下两种写法是完全相同的。但使用的时候要使用第一种类型
*/
User login(@Param(value="name")String name,@Param(value="password")String password );
// User login(String name,String password);
配置如下:
<select id="login" resultType="com.pojo.User">
select * from us where name=#{name} and password=#{password}
</select>
题外话:
@RequestBody常常将前端传来的post请求(Json格式的数据)进行解析,例如批量插入数据时,需要@RequestBody
@ResponseBody就是为了将Java对象以Json格式的形式传给前端(举个生活中的例子,用邮箱发邮件,根据SMTP协议,以数据流【随便说的,反正是某种特定形式啦】的形式发给对方,其实这个中间的形式跟Java前后端相连是不是很像)