SSM知识点+注解详解

参数取值特殊说明

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();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值