String[]これは、CSV の行である を のプロパティにマップする方法を定義していますJavaBean。
classあなたがそのようなものを持っていると仮定しましょう:
public class JavaBeanExample {
private Integer id;
private String name;
private Integer orderNumber;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(Integer orderNumber) {
this.orderNumber = orderNumber;
}
}
このクラスに関する重要なポイントは次のとおりです。
- public noargs コンストラクターを使用します。これは Java のデフォルトであるため、コンストラクターを指定する必要はありません。
- すべてのプロパティはプライベートです。
- すべてのプロパティにはゲッター、つまり
getXxxx値を返すメソッドが呼び出されます。
- すべてのプロパティにはセッター、つまり
setXxxx値を設定するために呼び出されるメソッドがあります。
今; 最初のメソッド はsetType、Bean のクラスを取得します。これを使用して、リフレクションを介してインスタンスを作成します。この場合、次のように呼び出します。
strat.setType(JavaBeanExample.class);
次に、次の形式の CSV があるとします。
名前、注文番号、注文 ID
Joe Bloggs、77777、00001
John Smith、77778、00002
したがって、最初の列をnameプロパティに、2 番目をorderNumberプロパティに、3 番目をにマップする必要がありidます。Bean 内のプロパティ名を使用して、使用するセッターを OpenCSV に伝えます。次に、OpenCSV は a を使用しPropertyDescriptorて、対応する名前のセッターを介してプロパティを設定します。
この場合、次のように呼び出します。
String[] columns = new String[] {"name", "orderNumber", "id"};
strat.setColumnMapping(columns);
これですべての設定が完了し、OpenCSV を呼び出して開始できます。
List list = csv.parse(strat, yourReader);
これにより、ファイルの各行に 1 つずつ、 Listofが返されます。JavaBeanExample
しかし、これはやや不愉快ですList。これは、例がやや古くなっているためです。これはGenericsを利用した例で、この例は Java 7 で書かれています。
final ColumnPositionMappingStrategy<JavaBeanExample> strategy = new ColumnPositionMappingStrategy<>();
strategy.setType(JavaBeanExample.class);
strategy.setColumnMapping(new String[]{"name", "orderNumber", "id"});
final CsvToBean<JavaBeanExample> csvToBean = new CsvToBean<>();
final List<JavaBeanExample> beanExamples;
try (final Reader reader = new FileReader("myFile.csv")) {
beanExamples = csvToBean.parse(strategy, reader);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
ここでの違いはColumnPositionMappingStrategy、山かっこを使用してジェネリック型を伝えることです。CsvToBeanまた、そのジェネリック型も伝えます。これは、parse を呼び出すと aList<JavaBeanExample>が返されることを意味します。つまり、Listそのジェネリック型を知っています。の個々の要素をキャストする必要がなくなりましたList。