Я ищу помощь в следующем. Скажем, у меня есть следующие записи, возвращенные базой данных:
date status groupStatus count
2020-01-01 ACC Accepted 3
2020-01-22 RJCT Rejected 47
2020-01-22 NM Other 1
2020-01-23 NIY Failed 55
У меня есть следующий метод в моем Java классе хранилища базы данных, где я использую Spring NamedJdbcTemplate
:
public Map<LocalDate, EnumMap<Status, Integer>> status(final Request searchCriteria) {
Map<LocalDate, EnumMap<Status, Integer>> statusMap = new HashMap<>();
return this.namedParameterJdbcTemplate.queryForMap() //incomplete
}
Как заполнить карту statusMap
с помощью вызова queryForMap()
?
Status
- это перечисление, в котором текст соответствует выводу текста столбца groupStatus
, возвращаемого базой данных.
public enum Status{
ACCEPTED("Accepted"),
REJECTED("Rejected"),
OTHER("Other"),
FAILED("Failed");
private final String text;
Status (final String text) {
this.text = text;
}
}
Моя попытка, когда я пытаюсь заполнить EnumMap
, используя значения Status
Enum:
return this.namedParameterJdbcTemplate.query(this.QUERY,
new MapSqlParameterSource()
.addValue("date", searchCriteria.getDate())
new ResultSetExtractor<Map<LocalDate, EnumMap<Status, Integer>>>() {
@Override
public Map<LocalDate, EnumMap<Status, Integer>> extractData(ResultSet rs) throws SQLException, DataAccessException {
Map<LocalDate, EnumMap<Status, Integer>> statusMap = new HashMap<>();
while (rs.next()) {
statusMap.put(rs.getDate("date").toLocalDate(), )
}
}
}
);
ПРИМЕЧАНИЕ. Мне также нужны дубликаты ключей, поскольку дата является ключом.