update findAll() method

This commit is contained in:
Vitaliy Fedoriv 2016-11-06 11:28:33 +02:00
parent 72fa5102c5
commit 3ee5e912ee

View file

@ -1,5 +1,6 @@
package org.springframework.samples.petclinic.repository.jdbc; package org.springframework.samples.petclinic.repository.jdbc;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -11,10 +12,13 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.samples.petclinic.model.Owner;
import org.springframework.samples.petclinic.model.Pet; import org.springframework.samples.petclinic.model.Pet;
import org.springframework.samples.petclinic.model.PetType;
import org.springframework.samples.petclinic.repository.OwnerRepositoryExt; import org.springframework.samples.petclinic.repository.OwnerRepositoryExt;
import org.springframework.samples.petclinic.repository.PetRepositoryExt; import org.springframework.samples.petclinic.repository.PetRepositoryExt;
import org.springframework.samples.petclinic.repository.VisitRepositoryExt; import org.springframework.samples.petclinic.repository.VisitRepositoryExt;
import org.springframework.samples.petclinic.util.EntityUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
@ -22,23 +26,36 @@ import org.springframework.stereotype.Repository;
public class JdbcPetRepositoryExtImpl extends JdbcPetRepositoryImpl implements PetRepositoryExt { public class JdbcPetRepositoryExtImpl extends JdbcPetRepositoryImpl implements PetRepositoryExt {
private NamedParameterJdbcTemplate namedParameterJdbcTemplate; private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired @Autowired
public JdbcPetRepositoryExtImpl(DataSource dataSource, public JdbcPetRepositoryExtImpl(DataSource dataSource,
@Qualifier("OwnerRepositoryExt") OwnerRepositoryExt ownerRepository, @Qualifier("OwnerRepositoryExt") OwnerRepositoryExt ownerRepository,
@Qualifier("VisitRepositoryExt") VisitRepositoryExt visitRepository) { @Qualifier("VisitRepositoryExt") VisitRepositoryExt visitRepository) {
super(dataSource, ownerRepository, visitRepository); super(dataSource, ownerRepository, visitRepository);
// TODO super () ?
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
} }
@Override @Override
public Collection<Pet> findAll() throws DataAccessException { public Collection<Pet> findAll() throws DataAccessException {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
return this.namedParameterJdbcTemplate.query( Collection<Pet> pets = new ArrayList<Pet>();
"SELECT id, name, birth_date, type_id, owner_id FROM pets", Collection<JdbcPet> jdbcPets = new ArrayList<JdbcPet>();
params, jdbcPets = this.namedParameterJdbcTemplate.
BeanPropertyRowMapper.newInstance(Pet.class)); query("SELECT pets.id, name, birth_date, type_id, owner_id FROM pets",
params,
new JdbcPetRowMapper());
Collection<PetType> petTypes = this.namedParameterJdbcTemplate.query(
"SELECT id, name FROM types ORDER BY name", new HashMap<String, Object>(),
BeanPropertyRowMapper.newInstance(PetType.class));
Collection<Owner> owners = this.namedParameterJdbcTemplate.query(
"SELECT id, first_name, last_name, address, city, telephone FROM owners ORDER BY last_name", new HashMap<String, Object>(),
BeanPropertyRowMapper.newInstance(Owner.class));
for(JdbcPet jdbcPet : jdbcPets){
jdbcPet.setType(EntityUtils.getById(petTypes, PetType.class, jdbcPet.getTypeId()));
jdbcPet.setOwner(EntityUtils.getById(owners, Owner.class, jdbcPet.getOwnerId()));
pets.add(jdbcPet);
}
return pets;
} }
@Override @Override