Chapter 31

CSVクラス

kazpgm
kazpgm
2022.01.07に更新

自動作成されたCSVクラスを説明する。

商品情報CSVクラス(ShohinCsv.java)

csv.ShohinCsv.java

package com.kaz01u.demo.csv;
import java.util.Date;

・jackson-dataformat-csvライブラリの、@JsonPropertyOrder、@JsonPropertyで指定している順序が出力順序になる。

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

・対象クラス内のインスタンス変数に対してgetter/setterでアクセスすることを可能とするためlombok.Dataを使う。

@Data

・デフォルトコンストラクタを自動生成するため、lombok.NoArgsConstructorを使う。

@NoArgsConstructor

・フィールドに対する初期化値を引数にとるコンストラクタを自動生成するため、lombok.AllArgsConstructorを使う。

@AllArgsConstructor

・当クラスの文字列表現のため、lombok.ToStringを使う。@Dataですでに@ToStringされているので書かなくても良いが、書いても良いので書いてある。

@ToString

・@JsonPropertyOrderがCSVタイトル行になる。この並びでデータも編集される。定義エクセルのC,I列から自動作成されています。★01

//CSVタイトル行。この並びで編集される。★02
@JsonPropertyOrder({"商品CD", "商品名", "業種ID", "業種ID名", "大分類", "大分類名", "中分類", "中分類名", "小分類", "小分類名", "公開区分", "公開区分名", "登録日時", "更新日時"})

・当クラスは、CsvMapperクラスとCsvSchemaクラスを使用してCSV出力するShohinController(csvダウンロード) で使用されます。

public class ShohinCsv {

・@JsonPropertyで指定している文字列の位置に出力される。@JsonProperty("商品CD")なら、@JsonPropertyOrderの"商品CD"の位置。
・@JsonProperty、変数は、定義エクセルのC,D,G,I列から自動作成されています。★01

    @JsonProperty("商品CD")
    private String products;
    @JsonProperty("商品名")
    private String productsname;
    @JsonProperty("業種ID")
    private Long biztypeCd;
    @JsonProperty("業種ID名")
    private String biztypeCdName;
    @JsonProperty("大分類")
    private String categoryCd;
    @JsonProperty("大分類名")
    private String categoryCdName;
    @JsonProperty("中分類")
    private String subcategoryCd;
    @JsonProperty("中分類名")
    private String subcategoryCdName;
    @JsonProperty("小分類")
    private String extracategoryCd;
    @JsonProperty("小分類名")
    private String extracategoryCdName;
    @JsonProperty("公開区分")
    private String openkbn1;
    @JsonProperty("公開区分名")
    private String openkbn1Name;
    @JsonProperty("登録日時")
    private Date insdt;
    @JsonProperty("更新日時")
    private Date updt;
}