官术网_书友最值得收藏!

  • Spring 5.0 Projects
  • Nilang Patel
  • 285字
  • 2021-07-02 12:34:57

Designing the CountryLanguageDAO

We will need to expose the following APIs to interact with the countrylanguage table:

  • Get list of languages for a given country code
  • Add a new language for a country by checking that the language doesn't already exist
  • Delete a language for a country

For the sake of keeping it short, we will show the method implementations covering these three scenarios. The complete code can be found in the com.nilangpatel.worldgdp.dao.CountryLanguageDAO class available in the code downloaded for this book. The following is the code for these method implementations:

public List<CountryLanguage> getLanguages(String countryCode, Integer pageNo){
Map<String, Object> params = new HashMap<String, Object>();
params.put("code", countryCode);

Integer offset = (pageNo - 1) * PAGE_SIZE;
params.put("offset", offset);
params.put("size", PAGE_SIZE);

return namedParamJdbcTemplate.query("SELECT * FROM countrylanguage"
+ " WHERE countrycode = :code"
+ " ORDER BY percentage DESC "
+ " LIMIT :size OFFSET :offset ",
params, new CountryLanguageRowMapper());
}

public void addLanguage(String countryCode, CountryLanguage cl) {
namedParamJdbcTemplate.update("INSERT INTO countrylanguage ( "
+ " countrycode, language, isofficial, percentage ) "
+ " VALUES ( :country_code, :language, "
+ " :is_official, :percentage ) ",
getAsMap(countryCode, cl));
}

public boolean languageExists(String countryCode, String language) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("code", countryCode);
params.put("lang", language);

Integer langCount = namedParamJdbcTemplate.queryForObject(
"SELECT COUNT(*) FROM countrylanguage"
+ " WHERE countrycode = :code "
+ " AND language = :lang", params, Integer.class);
return langCount > 0;
}

public void deleteLanguage (String countryCode, String language ) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("code", countryCode);
params.put("lang", language);
namedParamJdbcTemplate.update("DELETE FROM countrylanguage "
+ " WHERE countrycode = :code AND "
+ " language = :lang ", params);
}

private Map<String, Object> getAsMap(String countryCode, CountryLanguage cl){
Map<String, Object> map = new HashMap<String, Object>();
map.put("country_code", countryCode);
map.put("language", cl.getLanguage());
map.put("is_official", cl.getIsOfficial());
map.put("percentage", cl.getPercentage());
return map;
}
主站蜘蛛池模板: 巢湖市| 通渭县| 五指山市| 沭阳县| 手机| 习水县| 马山县| 沙坪坝区| 东丰县| 玉溪市| 五常市| 炉霍县| 乐安县| 松阳县| 大安市| 定日县| 大安市| 宁阳县| 马山县| 皋兰县| 浦东新区| 应用必备| 奉新县| 和平区| 淮南市| 濮阳市| 绥阳县| 巴塘县| 裕民县| 辽阳县| 莱阳市| 罗江县| 普定县| 兴义市| 临沂市| 兴山县| 湖北省| 马边| 类乌齐县| 曲松县| 溆浦县|