1SpringBoot注解相关
1.1@PathVariable注解使用
/**
* /@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
* GetMapping中写了相关字符串、在fndPage()的括号中也必须写-用@PathVariable标记
* 请求地址:http://localhost:9011/brand/search/1/2
* @param page
* @param size
* @return
*/
@GetMapping("/search/{page}/{size}")
public Result findPage(@PathVariable("page")int page,@PathVariable("size") int size){
Page<Brand> pageInfo = brandService.findPage(page, size);
PageResult pageResult = new PageResult(pageInfo.getTotal(),pageInfo.getResult());
return new Result(true,StatusCode.OK,"查询成功",pageResult);
}
2异常
2.1统一异常处理
项目中并不是每一处代码都需要trycatch包裹,而有防止代码出现意料之外的yi'chang
import com.alibaba.fastjson.JSON;
import com.changgou.common.pojo.Result;
import com.changgou.common.pojo.StatusCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 统一异常处理
*
* @ControllerAdvice 声明该类是一个增强类
*/
@Slf4j
@ControllerAdvice
public class BaseExceptionHandler {
/**
* 统一处理 异常
*
* @param e
* @return
* @ExceptionHandler(value = Exception.class) 针对那些异常做统一处理,Exception.class说明针对所以异常做处理
* @ResponseBody 返回前端格式
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result error(Exception e) {
log.error("统一异常处理:json:{}", JSON.toJSONString(e));
return new Result(false, StatusCode.ERROR, "当前系统繁忙,请您稍后重试");
}
}
3其他
3.1SpringBoot连接数据库后面的代码
?characterEncoding=utf8&serverTimezone=Asia/Shanghai
#例如
jdbc:mysql://127.0.0.1:3306/tsdb?characterEncoding=utf8&serverTimezone=Asia/Shanghai
3.2IDEA如何自动生成 serialVersionUID 的设置
serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过 判断类的serialVersionUID来验证的版本一致的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID于本地相应实体类的serialVersionUID进行比较。如果相同说明是一致的,可以进行反序列化,否则会出现反序列化版本一致的异常,即是InvalidCastException。
具体序列化的过程是这样的:序列化操作时会把系统当前类的serialVersionUID写入到序列化文件中,当反序列化时系统会自动检测文件中的serialVersionUID,判断它是否与当前类中的serialVersionUID一致。如果一致说明序列化文件的版本与当前类的版本是一样的,可以反序列化成功,否则就失败;
serialVersionUID有两种显示的生成方式:
一是默认的1L,比如:private static final long serialVersionUID = 1L;
二是根据包名,类名,继承关系,非私有的方法和属性,以及参数,返回值等诸多因子计算得出的,极度复杂生成的一个64位的哈希字段。基本上计算出来的这个值是唯一的。比如:private static final long serialVersionUID = xxxxL;
注意:显示声明serialVersionUID可以避免对象不一致
关于怎么生成,参考: