参数取值特殊说明
1.形参/实参:参数传递的是值,与名称无关;
2.resultMap简化:当开启驼峰映射规则时,可以自动映射,则resultType可以直接使用;
3.如果mybatis传递的参数只有一个,则mybatis是利用下标取值,所以名称任意;
但是,一般需要注意开发规范。
Dept findDeptById(int id);
方式一:
<select id="findDeptById" resultType="Dept">
select * from dept where dept_id = #{id}
</select>
方式二:
<select id="findDeptById" resultType="Dept">
select * from dept where dept_id = #{abc}
</select>
@Param注解使用
如果是多个单值传单,必须用@Parm注解,把多个单值转成map集合,名称则必须是map集合的key,也就是 @Param(“id”)里面的id
Dept findDeptById(@Param("id") int id);
<select id="findDeptById" resultType="Dept">
select * from dept where dept_id = #{id}
</select>
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.如果接收参数的名称与对象中的属性名称一致,则可以使用对象接收
@PathVariable注解使用
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
@RequesBody使用
@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依赖项.
/**
* 案例说明: 根据id查询部门信息
* 关于对象创建说明:
* 1.DeptMapper是一个接口. 接口不能直接实例化对象!!!
* 2.获取的DeptMapper是JDK在内部动态为接口生成的代理对象.
* 3.调用代理对象功能上与接口一致.
*/
@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();
}