springboot中讲csv文件的数据传到数据库中
时间: 2024-02-15 16:02:18 浏览: 141
springboot-batch-dbtocsv-demo:这个项目解释了如何通过springboot使用springbatch将数据从数据库插入到csv文件中
首先,你需要添加以下依赖:
```xml
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.0</version>
</dependency>
```
然后,你可以编写一个CSV文件读取器,读取CSV文件并将其转换为Java对象。代码如下:
```java
public class CsvReader {
public List<MyObject> readCsv(String filePath) throws IOException {
FileReader fileReader = new FileReader(filePath);
CSVReader csvReader = new CSVReaderBuilder(fileReader)
.withSkipLines(1)
.build();
List<String[]> data = csvReader.readAll();
List<MyObject> objects = new ArrayList<>();
for (String[] row : data) {
MyObject object = new MyObject();
object.setField1(row[0]);
object.setField2(row[1]);
// set other fields
objects.add(object);
}
return objects;
}
}
```
其中,`MyObject` 是你要存储到数据库中的Java对象。
接下来,你可以编写一个服务类,将Java对象存储到数据库中。代码如下:
```java
@Service
public class MyService {
@Autowired
private MyRepository repository;
public void saveObjects(List<MyObject> objects) {
repository.saveAll(objects);
}
}
```
其中,`MyRepository` 是你的JPA仓库,用于将Java对象映射为数据库表。
最后,你可以编写一个Controller,将整个流程串起来。代码如下:
```java
@RestController
public class MyController {
@Autowired
private CsvReader csvReader;
@Autowired
private MyService service;
@PostMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file) throws IOException {
String filePath = "/tmp/" + file.getOriginalFilename();
file.transferTo(new File(filePath));
List<MyObject> objects = csvReader.readCsv(filePath);
service.saveObjects(objects);
}
}
```
在这个例子中,我们假设你上传的CSV文件只有两列,分别是字段1和字段2。你需要根据实际情况修改代码。
阅读全文