gpt4 book ai didi

java - 如何在嵌套 SELECT 查询中使用 BeanMapHandler 进行字段到列映射(以键作为 ID)?

转载 作者:行者123 更新时间:2023-12-01 16:59:14 26 4
gpt4 key购买 nike

我有一个嵌套 SQL 查询来使用员工 ID 获取员工详细信息。

现在我正在使用 BeanListHandler 来获取数据 List<Details>但想将其存储为 Map<String, Details>其中我原来传入的ID需要作为key,方便检索,而不是每次都用流来搜索List。

我尝试转换为 map ,但我不确定如何将 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)在结果中,我在创建键值对方面缺少什么?

最佳答案

来自文档 https://commons.apache.org/proper/commons-dbutils/apidocs/org/apache/commons/dbutils/handlers/BeanMapHandler.html您正在使用的构造函数的

public BeanMapHandler(Class<V> type,
RowProcessor convert)

// Creates a new instance of BeanMapHandler. The value of the first column of each row will be a key in the Map.

以上应该有效。

您还可以尝试像这样覆盖createKey

protected K createKey(ResultSet rs)
throws SQLException {
return rs.getString("PARTNER"); // or getInt whatever suits

}

关于java - 如何在嵌套 SELECT 查询中使用 BeanMapHandler 进行字段到列映射(以键作为 ID)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61537391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com