说,我有一个具有以下结构的表
CONTINENT COUNTRY CAPITAL CITY POPULATION
--------- ------- ------- ---- ----------
EUROPE UK LONDON LONDON 4234323
EUROPE UK LONDON BIRMINGHAM 432432
EUROPE GERMANY BERLIN BERLIN 24342342
EUROPE GERMANY BERLIN MUNICH 343433
ASIA CHINA BEIJING BEIJING 543345453
ASIA CHINA BEIJING SHANGHAI 432434233
ASIA JAPAN TOKYO TOKYO 43232333
我的班级看起来
class Continent {
String name;
List<Country> countries;
}
class Country {
String capitalCityName;
List<City> cities;
}
class City {
String name;
Long population;
}
我可以从上表中选择行并使用JDBC模板将其填充到我的类中的最佳方法是什么?我知道数据库表没有规范化,但由于遗留支持的原因,我需要接受它。
答案 0 :(得分:0)
实际上你需要添加
select distinct *
from t
ORDER BY CONTINENT, COUNTRY, CITY
然后您只需要在更改大陆名称时创建新的大陆,在国家/地区名称更改时创建国家/地区。
对于每一行,都会创建一个城市并将其添加到当前国家/地区。
这样一个循环就足够了。
答案 1 :(得分:0)
最简单的解决方案是使用 BeanPropertyRowMapper 类。虽然还有其他方法可以做到这一点。
因此,例如,在您的情况下,要获取国家/地区数据,您可以执行以下操作:
public List<Country> getCountries(){
String sql = "SELECT * FROM COUNTRY";
List<Country> countries = getJdbcTemplate().query(sql,
new BeanPropertyRowMapper(Country.class));
return countries;
}