- 参数取值特殊说明
- @Param注解使用
- RestFul语法
- @PathVariable注解使用
- Axios-POST/PUT
- @RequesBody使用
- 常见动态代理
1.形参/实参:参数传递的是值,与名称无关;
2.resultMap简化:当开启驼峰映射规则时,可以自动映射,则resultType可以直接使用;
3.如果mybatis传递的参数只有一个,则mybatis是利用下标取值,所以名称任意;
但是,一般需要注意开发规范。
Dept findDeptById(int id); 方式一:@Param注解使用select * from dept where dept_id = #{id} 方式二:
如果是多个单值传单,必须用@Parm注解,把多个单值转成map集合,名称则必须是map集合的key,也就是 @Param(“id”)里面的id
Dept findDeptById(@Param("id") int id);RestFul语法
1.用户url编辑
* 1.1 参数与参数之间使用/分割.
* 1.2 restFul结构顺序一旦确定,不能随意更改
* 1.3 如果使用restFul结构,请求路径中不能出现动词.隐藏目的.
*
* 2.用户规范:
* 由于restFul结构请求路径都是名词,所以不能区分业务逻辑.
* 所以采用请求类型,严格区分业务需求.
* 2.1 GET 查询 *** 作
* 2.2 POST 新增 *** 作/form表单提交
* 2.3 PUT 修改 *** 作
* 2.4 DELETE 删除 *** 作
*
* 3.参数接收
* 1.参数与参数之间使用/分割.
* 2.参数必须使用{xxx}包裹
* 3.使用特定的注解@PathVariable(“name”) String name 接收参数
* 4.如果接收参数的名称与对象中的属性名称一致,则可以使用对象接收
URL:参数进行动态传值,必须使用@PathVariable注解
@GetMapping("/user/{name}/{age}/{id}") public Object restFul(User user){ userService.update(user); return "数据更新成功!!!"; }Axios-POST/PUT
业务:实现用户的新增
* URL: http://localhost:8090/axios/saveUser
* 参数: {“name”:“国庆快乐”,“age”:72,“sex”:“女”} JSON串
* 返回值: String 新增成功
* 知识点: post请求传递对象时,传递的数据是一个json串.不能直接为User对象赋值.
* 解决方案:
* 1.对象转化为JSON @ResponseBody
* 2.JSON转化为对象 @RequestBody
@PostMapping("/saveUser") public String saveUser(@RequestBody User user){ System.out.println(user); userService.saveUser(user); return "用户入库成功!!!"; }常见动态代理
1.JDK动态代理
特点:
1.要求被代理者必须实现(有)接口.
2.JDK代理是jdk默认提供的.
2.CGLIB动态代理
特点:
1.不管被代理者是否有接口,都可以为其创建代理对象. 代理对象是目标对象的子类.
2.cglib需要手动导入jar包
3.spring为了创建代理对象方便,自身自动添加cglib依赖项.
@Test public void testFindDeptById(){ SqlSession sqlSession = sqlSessionFactory.openSession(); DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class); System.out.println(deptMapper.getClass()); int id = 100; Dept dept = deptMapper.findDeptById(id); System.out.println(dept); sqlSession.close(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)