Java后端开发Day1:基于MybatisPlus实现entity实体的公共属性的自动更新

写在最前面:

在开发时遇到的问题,我们发现在对实体对象进行save()和update()操作时,一些公共字段,如更新、插入时间,往往需要我们重复地手动去设置,这增加了不必要的开发时间。

解决方案:利用MP为我们提供的对应方法。

解决步骤:

一:在实体类的公共属性上加上@TableField注解该注解由MP提供),标识为需要进行自动填充的属性。

  二:自定义的原对象数据处理器实现MetaObjectHandler接口(由MP提供)

重写其中的insertFill和updateFill方法,分别对应在新增实体和更新实体两个操作时,自动完成公共属性的赋值。setValue方法的两个参数分别为需要自动赋值的属性名和赋值的内容。

 到此,公共字段的更新就交由MB来完成,提高了后端开发人员的开发效率。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Avue 中的图片上传,可以通过 `avue-upload` 组件来实现。示例代码如下: ```vue <template> <div> <avue-upload label="上传图片" :action="uploadUrl" :headers="{ Authorization: 'Bearer ' + localStorage.getItem('token') }" :data="{ type: 'avatar' }" :multiple="false" :show-upload-list="false" :on-success="handleSuccess" > <img v-if="imageUrl" :src="imageUrl" style="max-width: 100%" /> <div v-else style="width: 200px; height: 200px; border: 1px solid #ccc; text-align: center; line-height: 200px;"> 点击上传图片 </div> </avue-upload> </div> </template> <script> export default { data() { return { imageUrl: '', uploadUrl: '/api/upload' } }, methods: { handleSuccess(response) { if (response.code === 0) { this.imageUrl = response.data.url; } else { this.$message.error(response.message); } } } } </script> ``` 在上面的代码中,我们使用了 `avue-upload` 组件来实现图片上传,并将上传的图片地址保存到了 `imageUrl` 变量中。其中: - `action` 属性指定了上传文件的地址; - `headers` 属性指定了请求头; - `data` 属性指定了上传文件的额外参数,例如这里的 `type: 'avatar'`。 需要注意的是,上传图片的后端接口需要根据实际情况进行开发,这里只是一个示例。 下面是使用 Spring BootMyBatis Plus 实现图片上传和保存地址的示例代码: ```java @RestController @RequestMapping("/api") public class ImageController { @Autowired private ImageService imageService; @PostMapping("/upload") public Result upload(@RequestParam("file") MultipartFile file) throws IOException { if (file.isEmpty()) { return Result.error("上传文件不能为空"); } String fileName = file.getOriginalFilename(); String contentType = file.getContentType(); long size = file.getSize(); String filePath = "uploads/" + UUID.randomUUID().toString() + getFileExtension(fileName); File dest = new File(filePath); if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } file.transferTo(dest); Image image = new Image(); image.setName(fileName); image.setPath(filePath); image.setSize(size); image.setType(contentType); imageService.save(image); String url = "/api/image/" + image.getId(); return Result.success("上传成功", new HashMap<String, Object>() {{ put("url", url); }}); } @GetMapping("/image/{id}") public ResponseEntity<Resource> getImage(@PathVariable Long id) throws IOException { Image image = imageService.getById(id); if (image == null) { return ResponseEntity.notFound().build(); } Path path = Paths.get(image.getPath()); ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(path)); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + image.getName() + "\"") .contentLength(image.getSize()) .contentType(MediaType.parseMediaType(image.getType())) .body(resource); } private String getFileExtension(String fileName) { int index = fileName.lastIndexOf("."); if (index == -1) { return ""; } return fileName.substring(index); } } ``` 在上面的代码中,我们使用了 Spring BootMyBatis Plus 来实现图片上传和保存地址。其中: - `upload` 方法处理了上传图片的请求,将图片保存到本地磁盘的 `uploads` 目录下,并将图片的地址信息保存到 MySQL 数据库中; - `getImage` 方法处理了获取图片的请求,根据图片的 ID 从数据库中获取图片的地址信息,并通过 `ResponseEntity` 返回图片的二进制数据。 需要注意的是,这里的示例代码只是一个简单的实现,生产环境中需要根据实际情况进行优化和改进,例如加入图片的压缩、水印等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值