From 9e344eac5b2408851eb5db00a51eee08f6871fa8 Mon Sep 17 00:00:00 2001 From: Vitaliy Fedoriv Date: Tue, 1 Nov 2016 21:02:23 +0200 Subject: [PATCH] Add JdbcPetTypeRepositoryExtImpl implementation --- .../jdbc/JdbcPetTypeRepositoryExtImpl.java | 57 +++++- .../jdbc/JdbcSpecialtyRepositoryExtImpl.java | 171 +++++++++--------- 2 files changed, 136 insertions(+), 92 deletions(-) diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetTypeRepositoryExtImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetTypeRepositoryExtImpl.java index e0f08ea0b..b5af9b11c 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetTypeRepositoryExtImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetTypeRepositoryExtImpl.java @@ -1,9 +1,20 @@ package org.springframework.samples.petclinic.repository.jdbc; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.dao.DataAccessException; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.BeanPropertyRowMapper; +import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.jdbc.core.simple.SimpleJdbcInsert; +import org.springframework.orm.ObjectRetrievalFailureException; import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.repository.PetTypeRepositoryExt; import org.springframework.stereotype.Repository; @@ -11,28 +22,62 @@ import org.springframework.stereotype.Repository; @Repository @Qualifier("PetTypeRepositoryExt") public class JdbcPetTypeRepositoryExtImpl implements PetTypeRepositoryExt { + + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + private SimpleJdbcInsert insertPetType; + + @Autowired + public JdbcPetTypeRepositoryExtImpl(DataSource dataSource) { + this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + this.insertPetType = new SimpleJdbcInsert(dataSource) + .withTableName("types") + .usingGeneratedKeyColumns("id"); + } @Override public PetType findById(int id) { - // TODO Auto-generated method stub - return null; + PetType petType; + try { + Map params = new HashMap<>(); + params.put("id", id); + petType = this.namedParameterJdbcTemplate.queryForObject( + "SELECT id, name FROM types WHERE id= :id", + params, + BeanPropertyRowMapper.newInstance(PetType.class)); + } catch (EmptyResultDataAccessException ex) { + throw new ObjectRetrievalFailureException(PetType.class, id); + } + return petType; } @Override public Collection findAll() throws DataAccessException { - // TODO Auto-generated method stub - return null; + Map params = new HashMap<>(); + return this.namedParameterJdbcTemplate.query( + "SELECT id, name FROM types", + params, + BeanPropertyRowMapper.newInstance(PetType.class)); } @Override public void save(PetType petType) throws DataAccessException { - // TODO Auto-generated method stub + BeanPropertySqlParameterSource parameterSource = new BeanPropertySqlParameterSource(petType); + if (petType.isNew()) { + Number newKey = this.insertPetType.executeAndReturnKey(parameterSource); + petType.setId(newKey.intValue()); + } else { + this.namedParameterJdbcTemplate.update("UPDATE types SET name=:name WHERE id=:id", + parameterSource); + } } @Override public void delete(PetType petType) throws DataAccessException { - // TODO Auto-generated method stub + Map params = new HashMap<>(); + params.put("id", petType.getId()); + this.namedParameterJdbcTemplate.update("DELETE FROM types WHERE id=:id", params); } diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcSpecialtyRepositoryExtImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcSpecialtyRepositoryExtImpl.java index 26509a5c4..b84a7a274 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcSpecialtyRepositoryExtImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcSpecialtyRepositoryExtImpl.java @@ -1,86 +1,85 @@ -package org.springframework.samples.petclinic.repository.jdbc; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.EmptyResultDataAccessException; -import org.springframework.jdbc.core.BeanPropertyRowMapper; -import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -import org.springframework.jdbc.core.simple.SimpleJdbcInsert; -import org.springframework.orm.ObjectRetrievalFailureException; -import org.springframework.samples.petclinic.model.Specialty; -import org.springframework.samples.petclinic.repository.SpecialtyRepositoryExt; -import org.springframework.stereotype.Repository; - -@Repository -@Qualifier("SpecialtyRepositoryExt") -public class JdbcSpecialtyRepositoryExtImpl implements SpecialtyRepositoryExt { - - private NamedParameterJdbcTemplate namedParameterJdbcTemplate; - - private SimpleJdbcInsert insertSpecialty; - - @Autowired - public JdbcSpecialtyRepositoryExtImpl(DataSource dataSource) { - // TODO Auto-generated constructor stub - this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); - - this.insertSpecialty = new SimpleJdbcInsert(dataSource) - .withTableName("specialties") - .usingGeneratedKeyColumns("id"); - } - - @Override - public Specialty findById(int id) { - Specialty specialty; - try { - Map params = new HashMap<>(); - params.put("id", id); - specialty = this.namedParameterJdbcTemplate.queryForObject( - "SELECT id, name FROM specialties WHERE id= :id", - params, - BeanPropertyRowMapper.newInstance(Specialty.class)); - } catch (EmptyResultDataAccessException ex) { - throw new ObjectRetrievalFailureException(Specialty.class, id); - } - return specialty; - } - - @Override - public Collection findAll() throws DataAccessException { - Map params = new HashMap<>(); - return this.namedParameterJdbcTemplate.query( - "SELECT id, name FROM specialties", - params, - BeanPropertyRowMapper.newInstance(Specialty.class)); - } - - @Override - public void save(Specialty specialty) throws DataAccessException { - // TODO not sure - need verify correct insert - BeanPropertySqlParameterSource parameterSource = new BeanPropertySqlParameterSource(specialty); - if (specialty.isNew()) { - Number newKey = this.insertSpecialty.executeAndReturnKey(parameterSource); - specialty.setId(newKey.intValue()); - } else { - this.namedParameterJdbcTemplate.update("UPDATE specialties SET name=:name WHERE id=:id", - parameterSource); - } - - } - - @Override - public void delete(Specialty specialty) throws DataAccessException { - Map params = new HashMap<>(); - params.put("id", specialty.getId()); - this.namedParameterJdbcTemplate.update("DELETE FROM specialties WHERE id=:id", params); - } - -} +package org.springframework.samples.petclinic.repository.jdbc; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.BeanPropertyRowMapper; +import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.jdbc.core.simple.SimpleJdbcInsert; +import org.springframework.orm.ObjectRetrievalFailureException; +import org.springframework.samples.petclinic.model.Specialty; +import org.springframework.samples.petclinic.repository.SpecialtyRepositoryExt; +import org.springframework.stereotype.Repository; + +@Repository +@Qualifier("SpecialtyRepositoryExt") +public class JdbcSpecialtyRepositoryExtImpl implements SpecialtyRepositoryExt { + + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + private SimpleJdbcInsert insertSpecialty; + + @Autowired + public JdbcSpecialtyRepositoryExtImpl(DataSource dataSource) { + // TODO Auto-generated constructor stub + this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + + this.insertSpecialty = new SimpleJdbcInsert(dataSource) + .withTableName("specialties") + .usingGeneratedKeyColumns("id"); + } + + @Override + public Specialty findById(int id) { + Specialty specialty; + try { + Map params = new HashMap<>(); + params.put("id", id); + specialty = this.namedParameterJdbcTemplate.queryForObject( + "SELECT id, name FROM specialties WHERE id= :id", + params, + BeanPropertyRowMapper.newInstance(Specialty.class)); + } catch (EmptyResultDataAccessException ex) { + throw new ObjectRetrievalFailureException(Specialty.class, id); + } + return specialty; + } + + @Override + public Collection findAll() throws DataAccessException { + Map params = new HashMap<>(); + return this.namedParameterJdbcTemplate.query( + "SELECT id, name FROM specialties", + params, + BeanPropertyRowMapper.newInstance(Specialty.class)); + } + + @Override + public void save(Specialty specialty) throws DataAccessException { + BeanPropertySqlParameterSource parameterSource = new BeanPropertySqlParameterSource(specialty); + if (specialty.isNew()) { + Number newKey = this.insertSpecialty.executeAndReturnKey(parameterSource); + specialty.setId(newKey.intValue()); + } else { + this.namedParameterJdbcTemplate.update("UPDATE specialties SET name=:name WHERE id=:id", + parameterSource); + } + + } + + @Override + public void delete(Specialty specialty) throws DataAccessException { + Map params = new HashMap<>(); + params.put("id", specialty.getId()); + this.namedParameterJdbcTemplate.update("DELETE FROM specialties WHERE id=:id", params); + } + +}