java8实现:写一个方法,参数为List<ADto>、ADto.class、filepath,利用csvMapper将List<ADto>出力为csv文件,自动将ADto的字段名出力为表头
时间: 2023-12-10 12:38:05 浏览: 11
首先需要引入以下依赖:
```xml
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-csv</artifactId>
<version>2.11.3</version>
</dependency>
```
然后可以按照如下代码实现:
```java
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import java.io.File;
import java.util.List;
public class CsvUtil {
public static void writeListToCsv(List<?> dataList, Class<?> clazz, String filePath) throws Exception {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(clazz).withHeader();
ObjectWriter writer = mapper.writerFor(clazz).with(schema);
File file = new File(filePath);
writer.writeValues(file).writeAll(dataList);
}
}
```
其中,`dataList` 参数为要输出的数据列表,`clazz` 参数为数据元素的类型,`filePath` 参数为输出的文件路径。
例如,如果要输出一个 `List<ADto>` 类型的数据到 `/tmp/adto.csv` 文件中,可以这样调用:
```java
List<ADto> dataList = ...; // 构造数据列表
CsvUtil.writeListToCsv(dataList, ADto.class, "/tmp/adto.csv");
```
这样就可以自动将 `ADto` 类的字段名作为表头输出到 csv 文件中了。