32.图片上传功能
上传图片功能
@PostMapping("blog")public ApiResponse uploadImage(@RequestParam("file") MultipartFile image) {try {//获取原始文件名称String originalFilename = image.getOriginalFilename();//生成新的文件名String fileName = createNewFileName(originalFilename);//保存文件image.transferTo(new File(UserConstant.IMAGE_UPLOAD_DIR, fileName));//返回结果log.debug("文件上传成功,{}", fileName);return ApiResponse.success(fileName);}catch (Exception e) {throw new RuntimeException("文件上传失败", e);}}private String createNewFileName(String originalFilename) {//获取后缀名String suffix = StrUtil.subAfter(originalFilename, ".", true);//生成目录String name = UUID.randomUUID().toString();int hash = name.hashCode();int d1 = hash & 0xF;int d2 = (hash >> 4) & 0xF;//判断目录是否存在File dir = new File(UserConstant.IMAGE_UPLOAD_DIR, StrUtil.format("/blogs/{}/{}", d1, d2));if(!dir.exists()) {dir.mkdirs();}//生成文件名return StrUtil.format("/blogs/{}/{}/{}.{}", d1, d2, name, suffix);}
分页查询功能
@Overridepublic List<Blog> queryHotBlog(Integer current) {//根据点赞数量倒序排列Page<Blog> page = query().orderByDesc("liked").page(new Page<>(current, UserConstant.MAX_PAGE_SIZE));List<Blog> records = page.getRecords();//这里采用lambda表达式简写records.forEach(this::queryBlogUser);return records;}/*** 给BLog对象添加用户信息* @param blog*/private void queryBlogUser(Blog blog) {User user = userService.getById(blog.getUserId());blog.setName(user.getNickName());blog.setIcon(user.getIcon());}注意lambda简写
mybatis中使用query()方法分页查询的写法
@Overridepublic void likeBlog(Integer id) {// update tb_blog set ... whereupdate().setSql("liked = liked + 1").eq("id", id).update();}mybatis中update()方法使用
