csv

Java – CSVとDTO形式を相互に変換する方法を解説

JavaでCSVとDTO(Data Transfer Object)を相互に変換するには、CSVデータをパースしてDTOオブジェクトにマッピングし、逆にDTOオブジェクトをCSV形式に変換します。

Apache Commons CSVやOpenCSVなどのライブラリを使用すると便利です。

CSVをDTOに変換する際は、CSVの各行をDTOのフィールドに対応付けます。

逆にDTOをCSVに変換する際は、DTOのフィールド値をCSVの列として出力します。

リフレクションを活用すれば汎用的な実装も可能です。

JavaでCSVをDTOに変換する方法

CSV(Comma-Separated Values)形式は、データをテキストファイルとして保存するための一般的なフォーマットです。

一方、DTO(Data Transfer Object)は、データを転送するためのオブジェクトです。

Javaでは、CSVデータをDTOに変換することで、データの操作や管理が容易になります。

CSVファイルの読み込み

まず、CSVファイルを読み込むために、BufferedReaderを使用します。

以下は、CSVファイルを読み込むサンプルコードです。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
class UserDTO {
    private String name;
    private int age;
    // コンストラクタ
    public UserDTO(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // ゲッター
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}
public class App {
    public static void main(String[] args) {
        String csvFile = "users.csv"; // 読み込むCSVファイル名
        String line;
        String csvSplitBy = ","; // CSVの区切り文字
        List<UserDTO> userList = new ArrayList<>();
        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
            while ((line = br.readLine()) != null) {
                String[] user = line.split(csvSplitBy); // 行を分割
                UserDTO userDTO = new UserDTO(user[0], Integer.parseInt(user[1])); // DTOに変換
                userList.add(userDTO); // リストに追加
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 読み込んだデータの表示
        for (UserDTO user : userList) {
            System.out.println("名前: " + user.getName() + ", 年齢: " + user.getAge());
        }
    }
}

このコードでは、users.csvというCSVファイルを読み込み、各行をUserDTOオブジェクトに変換しています。

CSVの各行は、カンマで区切られた名前と年齢の情報を持っています。

サンプルCSVファイルの内容

以下は、users.csvファイルのサンプル内容です。

山田太郎,30
鈴木花子,25
佐藤次郎,40

上記のコードを実行すると、以下のような出力が得られます。

名前: 山田太郎, 年齢: 30
名前: 鈴木花子, 年齢: 25
名前: 佐藤次郎, 年齢: 40

このように、CSVファイルからデータを読み込み、DTOに変換することができます。

これにより、データの管理や操作が容易になります。

JavaでDTOをCSVに変換する方法

DTO(Data Transfer Object)をCSV(Comma-Separated Values)形式に変換することで、データを簡単に保存したり、他のシステムと連携したりすることができます。

以下では、Javaを使用してDTOをCSV形式に変換する方法を解説します。

DTOクラスの定義

まず、変換するDTOクラスを定義します。

以下は、UserDTOクラスの例です。

class UserDTO {
    private String name;
    private int age;
    // コンストラクタ
    public UserDTO(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // ゲッター
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

DTOをCSV形式に変換するメソッド

次に、DTOのリストをCSV形式に変換するメソッドを作成します。

以下のサンプルコードでは、List<UserDTO>をCSV形式の文字列に変換します。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class App {
    public static void main(String[] args) {
        List<UserDTO> userList = new ArrayList<>();
        userList.add(new UserDTO("山田太郎", 30));
        userList.add(new UserDTO("鈴木花子", 25));
        userList.add(new UserDTO("佐藤次郎", 40));
        String csvFile = "output.csv"; // 出力するCSVファイル名
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(csvFile))) {
            // ヘッダーの書き込み
            bw.write("名前,年齢");
            bw.newLine();
            // DTOのリストをCSV形式で書き込む
            for (UserDTO user : userList) {
                bw.write(user.getName() + "," + user.getAge());
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

このコードでは、UserDTOのリストをoutput.csvというファイルに書き込んでいます。

最初にヘッダーを追加し、その後に各DTOの情報をカンマ区切りで書き込んでいます。

上記のコードを実行すると、output.csvファイルには以下の内容が書き込まれます。

名前,年齢
山田太郎,30
鈴木花子,25
佐藤次郎,40

このように、DTOをCSV形式に変換することで、データを簡単に保存することができます。

これにより、他のシステムとのデータ連携がスムーズになります。

まとめ

この記事では、Javaを使用してCSV形式のデータをDTOに変換する方法と、DTOをCSV形式に変換する方法について解説しました。

これにより、データの管理や操作がより効率的に行えるようになります。

今後は、実際のプロジェクトでこれらの技術を活用し、データの取り扱いをさらにスムーズに進めてみてください。

関連記事

Back to top button