0

ID を使用して従業員の詳細を取得するためのネストされた SQL クエリがあります。

現在、BeanListHandler を使用してデータを として取得していますが、毎回ストリームでリストを検索するのではなく、最初に渡した ID を簡単に取得するためのキーにする必要がList<Details>ある場所として保存したいと考えています。Map<String, Details>

マップに変換しようとしましたが、ID を文字列としてマップする方法も、元の ID を最終結果の列として内部クエリに渡す方法もわかりません。

MainTest.java:

String candidateId = "('1111', '2222', '3333', '4444')";

String detailsQuery =
    "select PARTNER, BIRTHDT, XSEXM, XSEXF from \"schema\".\"platform.view/table2\" where partner IN \r\n"
            + "(select SID from \"schema\".\"platform.view/table1\" where TYPE='BB' and CLASS='yy' and ID IN \r\n"
            + "(select SID from \"schema\".\"platform.view/table1\" where TYPE='AA' and CLASS='zz' and ID IN"
            + candidateId + "\r\n" + "))";

Map<String, Details> detailsView = queryRunner.query(conn, detailsQuery, new DetailsViewHandler());

詳細.java:

public class Details {

    private String candidateId;
    private String birthDate;
    private String maleSex;
    private String femaleSex;

    // getter and setter
}

DetailsViewHandler.java:

public class DetailsViewHandler extends BeanMapHandler<String, Details> {

    public DetailsViewHandler() {
        super(Details.class, new BasicRowProcessor(new BeanProcessor(getColumnsToFieldsMap())));
    }

    public static Map<String, String> getColumnsToFieldsMap() {
        Map<String, String> columnsToFieldsMap = new HashMap<>();
        columnsToFieldsMap.put("PARTNER", "candidateId");
        columnsToFieldsMap.put("BIRTHDT", "birthDate");
        columnsToFieldsMap.put("XSEXM", "maleSex");
        columnsToFieldsMap.put("XSEXF", "femaleSex");
        return columnsToFieldsMap;
    }
}

結果を取得する方法はありID (candidateId)ますか?キーと値のペアリングの作成に関して何が欠けていますか?

4

1 に答える 1