我在我的数据库中为市场定义了一些假期:
MarketA | 2018-10-04
MarketA | 2018-10-05
MarketB | 2018-02-15
MarketB | 2018-02-16架构是:
CREATE TABLE dbo.MarketHolidays
(
MarketName varchar(50) NOT NULL,
HolidayDate date NOT NULL
) 我希望将结果集映射到映射,并将sql查询中的日期解析为MonthDay。每个市场都应该有一个关键的假期清单。我不知道如何映射和解析到MonthDay,你能请你这样做吗?
@Slf4j
@Component
public class HolidayServiceDAOImpl implements HolidayServiceDAO {
@Autowired
private JdbcTemplate jdbcTemplate
@Override
public Map<String, List<java.time.MonthDay>> getHolidays() {
String sql = "select MarketName, HolidayDate from dbo.MarketHolidays ";
Map<String, List<MonthDay>> holidays = jdbcTemplate.query(sql, ...);
}
}发布于 2018-02-16 12:03:09
你不能像你想要的那样直接得到地图。你需要这样做
考虑到你有这样的波乔
@Getter
@Setter
public class MarketHolidays {
String MarketName;
Date holidayDate;
}那么您的转换逻辑将是
String sql = "select * from dbo.MarketHolidays ";
List<MarketHolidays> marketHolidaysList = jdbcTemplate.jdbcTemplate.queryForList(sql, MarketHolidays.class);
Map<String, List<MonthDay>> map = Maps.newHashMap();
marketHolidaysList.forEach(m -> {
Date holidayDate = m.getHolidayDate();
LocalDate date = holidayDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
MonthDay monthDay = MonthDay.of(date.getMonth(), date.getDayOfMonth());
map.computeIfAbsent(m.getMarketName(), s -> new ArrayList<>()).add(monthDay);
});https://stackoverflow.com/questions/48825582
复制相似问题