注:本文所用到的版本
MySql 8.0.28
SpringBoot 2.7.2
準備作業 :建表 、pom.xml匯入依賴 、application.yml 配置
- 建表
CREATE TABLE `rna` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`card_img` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`card` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`check` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`check_date` datetime DEFAULT NULL,
`result` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
- pom.xml匯入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 生成get set -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- msql資料庫 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid資料源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.11</version>
</dependency>
<!-- mybatis啟動器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!-- pageHelper分頁插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
<!-- 檔案上傳 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
- application.yml 配置
server:
port: 8100
spring:
datasource:
url: jdbc:mysql://localhost:3306/db03
username: 你的用戶名
password: 你的密碼
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
mapper-locations: mapper/*.xml
type-aliases-package: com.lyt.pojo
目錄結構

上傳檔案工具類
package com.lyt.util;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
* @author liuyutao
* @date 2022/07/27
*/
public class UploadUtil {
//上傳檔案的路徑前綴
public static String uploadPathPrefix = "D:\\upload\\images\\";
public static String upload(MultipartFile uploadFile, String oldPath) {
String uploadFullPath;//上傳檔案的完整路徑
String saveSqlPartFilePath;//回傳該屬性,保存到資料庫部分檔案路徑
if (ObjectUtils.isEmpty(oldPath)) {
String originalFilename = uploadFile.getOriginalFilename();//上傳檔案原始檔案名
assert originalFilename != null;
String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));//檔案型別
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy\\M\\");
String format = sdf.format(date);
String uuid = UUID.randomUUID().toString().replace("-", "");
String saveDiskFileName = uuid + fileType;// 保存到磁盤的檔案名
saveSqlPartFilePath = format + saveDiskFileName;
uploadFullPath = uploadPathPrefix + format + saveDiskFileName;//上傳檔案的完整路徑: D:\\upload\\images\\ yyyy\\M\\ uuid檔案名
} else {
uploadFullPath = uploadPathPrefix + oldPath;
saveSqlPartFilePath = oldPath;
}
File file = new File(uploadFullPath);
try {
if (!file.exists()) {
file.mkdirs();
}
uploadFile.transferTo(file);
} catch (IOException e) {
throw new RuntimeException(e);
}
return saveSqlPartFilePath;
}
}
SpringBoot 虛擬路徑映射
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/images/");
}
}
新增 + 上傳檔案
@PostMapping("/addRna")
public int uploadCard(@RequestParam("file") MultipartFile file, @RequestPart Rna rna) {
String cardImg = UploadUtil.upload(file, null);
rna.setCardImg(cardImg);
return rnaService.insertSelective(rna);
}
思路:
- 檔案 和 物件資料 同時訪問一個介面
- 上傳檔案后回傳檔案的部分路徑,非全路徑
- 設定到rna物件,一同添加到資料庫
編輯 + 上傳檔案
@PostMapping("/updateRna")
public int updateRna(@RequestParam("file") MultipartFile file, @RequestPart Rna rna) {
if (!file.isEmpty()) {
Rna rnaById = rnaService.selectByPrimaryKey(rna.getId());
UploadUtil.upload(file, rnaById.getCardImg());
}
return rnaService.updateByPrimaryKeySelective(rna);
}
-
這里不是洗掉原來檔案,而是同路徑同檔案名,覆寫原檔案
-
有上傳新檔案,則覆寫原檔案,編輯其他欄位資料
-
沒有上傳檔案,編輯其他欄位資料
查詢
- PageHelper 插件分頁
- 拼接檔案的完整url訪問路徑
洗掉
- 洗掉資料庫資料 + 洗掉檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500527.html
標籤:其他
下一篇:day09-Java陣列
