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;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@ -11,10 +12,13 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
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.PetType;
import org.springframework.samples.petclinic.repository.OwnerRepositoryExt;
import org.springframework.samples.petclinic.repository.PetRepositoryExt;
import org.springframework.samples.petclinic.repository.VisitRepositoryExt;
import org.springframework.samples.petclinic.util.EntityUtils;
import org.springframework.stereotype.Repository;
@Repository
@ -28,17 +32,30 @@ public class JdbcPetRepositoryExtImpl extends JdbcPetRepositoryImpl implements P
@Qualifier("OwnerRepositoryExt") OwnerRepositoryExt ownerRepository,
@Qualifier("VisitRepositoryExt") VisitRepositoryExt visitRepository) {
super(dataSource, ownerRepository, visitRepository);
// TODO super () ?
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
@Override
public Collection<Pet> findAll() throws DataAccessException {
Map<String, Object> params = new HashMap<>();
return this.namedParameterJdbcTemplate.query(
"SELECT id, name, birth_date, type_id, owner_id FROM pets",
Collection<Pet> pets = new ArrayList<Pet>();
Collection<JdbcPet> jdbcPets = new ArrayList<JdbcPet>();
jdbcPets = this.namedParameterJdbcTemplate.
query("SELECT pets.id, name, birth_date, type_id, owner_id FROM pets",
params,
BeanPropertyRowMapper.newInstance(Pet.class));
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