一般注解
注解 | 含义 |
---|---|
@Data | lombok的注解,包含get、set和toString方法 |
@Slf4j | 日志输出,用log.info( ) 打印日志 |
@Configuration | 告诉Spring Boot这是一个配置类 |
@ExceptionHandler({*Exception.class,…class,…class}) | 自定义异常处理器 |
@RestController | @Controller和@ResponseBody的结合 |
@RequestParam(required=true) | 获取前端请求参数。value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名;required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null |
@RequestBody | 请求方法体。获取前端传入的对象 |
@PathVariable | 将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中 |
@JsonSerialize(using = ToStringSerializer.class) | 序列化器,防止因为前后端传参数发生的不一致 |
@TableField(fill = FieldFill.INSERT) | 新增时自动填充,fill=FiledFill.INSERT_UPDATE:新增或修改自动填充 |
@TableField(exist = false) | 当前属性不是数据库的字段,但在项目中必须使用,这样可以用来把一个数据表当作一个字段来输出,用来实现表中表数据输出 |
@Param | @Param的作用就是给参数命名,比如在mapper里面某方法A(int id),当添加注解后A(@Param(“userId”) int id),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。将参数值传如SQL语句中,通过#{userId}进行取值给SQL的参数赋值 |
业务实现
1.文件上传与下载
@RestController
@RequestMapping("/common")
public class CommonController {
@Value("${ruiji.path}")
private String basePath;
@PostMapping("/upload")
public JsonResult<String> upload(MultipartFile file){
//得到传入的图片名称
String originalFilename = file.getOriginalFilename();
//通过UUID生成新的图片名前缀
String fileNamePrefix = UUID.randomUUID().toString();
//截取原图片名称后缀
String fileNameSuffix = originalFilename.substring(originalFilename.lastIndexOf('.'));
//拼接成fileName
String fileName = fileNamePrefix + fileNameSuffix;
//保证存储位置有这个文件夹
File dir = new File(basePath);
if (!dir.exists()) {
dir.mkdirs();
}
//MultipartFile将你上传的图片存入临时文件中,所以要转存
try {
file.transferTo(new File(basePath + fileName));
} catch (IOException e) {
e.printStackTrace();
}
return new JsonResult<>(1,fileName);
}
//图片下载通过字节流,所以不需要返回值
@RequestMapping("/download")
//要将图片显示在浏览器上,所以用HttpServletResponse
public void download(@RequestParam String name, HttpServletResponse httpServletResponse) throws IOException {
//读文件
FileInputStream fileInputStream = new FileInputStream(new File(basePath + name));
//把读取到内存中的图片用输出流写入Servlet响应对象里
ServletOutputStream outputStream = httpServletResponse.getOutputStream();
//可选项,选择响应类型
httpServletResponse.setContentType("image/jpeg");
byte[] b = new byte[1024];
//记录每次写入byte的长度
int lenth;
while ((lenth = fileInputStream.read(b))!=-1){
outputStream.write(b,0,lenth);
//刷新
outputStream.flush();
}
//关闭流
fileInputStream.close();
outputStream.close();
}
}
2.随机数生成
转载:生成随机数