今天工作呀,把这个@Param与@RequestParam的注解混淆了 我今晚在来熟练下:
@Param
背景:
这个注解是@Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=<参数数<=5时使用最佳。
原始方法
当只有一个参数时,没什么好说的,传进去一个值也只有一个参数可以匹配。当存在多个参数时,传进去的值就区分不开了,可以考虑用Map,例如接口: 
- xml的图片
 - 测试的代码:
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Map<String, Object> parameter = new HashMap<>();
parameter.put("roleName", "剑士");
parameter.put("note", "决战紫禁之巅");
List<Role> roles = roleMapper.findRolesByMap(parameter);
使用的@param后:
- 使用的注解后,差异是不知道这个注解的作用是啥,少了xml的那么的可读性高了,但是这提高了开发的效率,参数的类型上,并且也不能限定其传递的数据类型了。
 - 这个我们就可以传入参数了
- 当然也可以使用Java Bean来传递多个参数,定义一个POJO
 - 这是接口就是
 这样对应的xml文件与1处的区别就在于id和parameterType发生了变化,id对应的方法和parameterType对应该类的权限定名。 - 使用多的场景可以是这样了,对应多个POJO类
 这样的xml是:  注意此时并不需要写出parameterType属性,Mybatis会进行自动搜索。
@RequestParam
首先是@RequestParam是springmvc的注解:
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
步骤1、2、3、参考:SpringMvc入门案例:教程 5、业务处理器HelloController.java 
package com.woniuxy.test4;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("hello")
public class HelloController2 {
@RequestMapping("show16")
public ModelAndView test16(@RequestParam("name")String name){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "接收普通的请求参数:" + name);
return mv;
}
@RequestMapping("show17")
public ModelAndView test17(@RequestParam(value="name",required=false)String name){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "接收普通请求参数:" + name);
return mv;
}
@RequestMapping("show18")
public ModelAndView test18(@RequestParam(value="name",required=true,defaultValue="hello")String name){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "接收普通请求参数:" + name);
return mv;
}
}
效果图: 
总结
- 1.这个@param是myabtis的注解
@RequestParam是springmvc的注解 - 2这个是写在mapper层了,当参数用,绑定参数传值,是xml的另一种简单写法
而@RequestParam是springmvc的Contoller就是接收请求转发层的注解 语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””) 写在方法的参数里。 - 3@param:将参数绑定到mapper上,
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
不好的请大家多多提出了,谢谢
链接: @RequestParam参考的这篇博客的 @Param参考这篇博客的
|