上传图片功能
java
@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);
}
分页查询功能
java
@Override
public 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()方法分页查询的写法
java
@Override
public void likeBlog(Integer id) {
// update tb_blog set ... where
update().setSql("liked = liked + 1").eq("id", id).update();
}
mybatis中update()方法使用