总感觉基础不够扎实,只知其然而不知其所以然,这篇博客就记录一下这段时间所复习的一些知识吧…
1. SpringMVC篇:
1.1 请求与响应:
请求:
- 普通参数:请求参数名与形参名不同 —> @requestParam(“请求参数名”)
- POJO参数
- 嵌套POJO参数:
- 复杂属性.属性名
请求参数名与实体类中的属性名要一一对应
- 复杂属性.属性名
//POJO:
public class User{
...
private Address address;
}
class Address{
private String city;
private String town;
}
//前端:
...?name=itcast&age=15&address.city=beijing&address.town=beijing
//后端
public String pojoContainPOJOParam(User user){}
- 数组参数:请求参数名都为相同的名字,形参名也需要对应上,会自动完成封装。
//前端传递的参数
...?likes=game&likes=sign&likes=ball
//后端
public String arrayParam(String[] likes){}
- 集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,需要 使用@RequestParam绑定参数关系
JSON格式数据的传递(重点)
- JSON数组
- JSON格式:[“a”,“b”,“c”]
- 在后端接数据时需要在形参类型前加上@RequestBody
- @RequestBody —> 将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次
public String listParamForJson(@RequestBody List[] likes){}
- JSON对象(POJO)
- JSON数据样例:
{
"name":"itcast",
"age":15,
"address":{
"city":"beijing",
"town":"beijing"
}
}
- JSON数组(POJO)
- 日期类型参数传递:
- @DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)
总结:
@RequestParam 与@RequestBody的区别
- 区别:
- @RequestParam 用于接收 url 地址传参,表单传参【application/x-www-form-urlencoded】
- @RequestBody 用于接收 json数据 【application/json】
- 应用:
- 后期开发中,发送 json 格式数据为主,@RequestBody 的应用较广
- 如果发送的是非 json 格式数据,选用@RequestParam 接收请求参数
响应:
1.@ResponseBody:设置当前控制器返回值作为响应体
1.2 REST风格
- REST 是一种资源描述风格
- RESTful 是指根据 REST风格对资源进行访问
- 设置请求参数 —> @Get/Post/…Mapping(“/路径/ {形参名}”)
- public 返回类型 get(@PathVariable 变量类型 形参名)
3. 总结
- @RequestBody —> 用于接收JSON格式数据
- @RequestParam —> 用于接收url地址传参或者表单传参
- @PathVariable —> 用于接收路径参数,使用 {参数名称} 描述路径参数
1.3 拦截器
- 异常处理器:
- @RestControllerAdvice
- 为Rest风格开发的控制器类做增强
- @ExceptionHandler
- 专用于异常处理的控制器方法上方
- 设置指定异常的处理方案,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前方法执行
- @RestControllerAdvice
MyBatisPlus
- 导入依赖
- 继承BaseMapper<泛型>
2.分页功能:
- 设置分页拦截器作为Spring管理的Bean
- 执行分页查询
3.DQL编程控制
常见注解:
- @TableName:用来指定表名
- @TableId:用来指定表中的主键字段信息
- type = IdType.AUTO / Input / ASSIGN_ID
- @ TableField:用来指定表中的普通字段信息
- 成员变量名与数据库字段名不一致
- 成员变量名以 is 开头,且是布尔值
- 成员变量名与数据库关键字冲突
- 成员变量名不是数据库字段
- @TableLogic
- 设置当前字段为逻辑删除标记字段
- @TableLogic(value = “0”,delval = “1”)
- @Version
推荐在配置文件中一键配置:
MP乐观锁
- 数据库表中添加锁标记字段(version)
- 实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
- 配置乐观锁拦截器实现锁机制对应的动态SQL语句拼装
- 使用乐观锁机制在修改前必须先获取到对应数据的version才可以继续正常进行