spring mvc读取csv到数据库
时间: 2023-10-06 11:11:07 浏览: 257
可以使用以下步骤将csv文件中的数据读取到数据库中:
1. 在Spring MVC中创建一个Controller,用于处理上传CSV文件的请求。
2. 在Controller中使用MultipartFile来接收上传的CSV文件,并将其保存在服务器上。
3. 创建一个Java Bean,用于表示CSV文件中的每一行数据。
4. 使用OpenCSV或其他CSV解析库来解析CSV文件,并将其转换为Java Bean对象列表。
5. 创建一个DAO类,用于将Java Bean对象列表保存到数据库中。
6. 在Controller中调用DAO类的save方法将数据保存到数据库中。
下面是一个示例代码:
```java
@Controller
public class CsvUploadController {
@Autowired
private CsvDao csvDao;
@RequestMapping(value = "/uploadCsv", method = RequestMethod.POST)
public String uploadCsv(@RequestParam("file") MultipartFile file) {
try {
// 保存CSV文件到服务器
File csvFile = saveCsvFile(file);
// 解析CSV文件
List<CsvData> dataList = parseCsvFile(csvFile);
// 将数据保存到数据库
csvDao.save(dataList);
return "success";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
private File saveCsvFile(MultipartFile file) throws IOException {
File csvFile = new File("csv/" + file.getOriginalFilename());
FileUtils.copyInputStreamToFile(file.getInputStream(), csvFile);
return csvFile;
}
private List<CsvData> parseCsvFile(File csvFile) throws IOException {
List<CsvData> dataList = new ArrayList<>();
Reader reader = new FileReader(csvFile);
CsvToBean<CsvData> csvToBean = new CsvToBeanBuilder(reader)
.withType(CsvData.class)
.withIgnoreLeadingWhiteSpace(true)
.build();
Iterator<CsvData> csvIterator = csvToBean.iterator();
while (csvIterator.hasNext()) {
CsvData data = csvIterator.next();
dataList.add(data);
}
return dataList;
}
}
public class CsvData {
private String name;
private int age;
// ... 省略其他属性和getter/setter方法
}
@Repository
public class CsvDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void save(List<CsvData> dataList) {
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
for (CsvData data : dataList) {
jdbcTemplate.update(sql, data.getName(), data.getAge());
}
}
}
```
在上面的示例中,CsvUploadController处理上传CSV文件的请求,并调用CsvDao将数据保存到数据库中。CsvData是一个Java Bean,用于表示CSV文件中的每一行数据。在parseCsvFile方法中,使用OpenCSV将CSV文件解析为CsvData对象列表。CsvDao使用Spring JDBC的JdbcTemplate来执行SQL语句将数据保存到数据库中。
阅读全文