paramMap.put("first_name", contact.getFirstName());
paramMap.put("last_name", contact.getLastName());
paramMap.put("birth_date", contact.getBirthDate());
KeyHolder keyHolder = new GeneratedKeyHolder();
insertContact.updateByNamedParam(paramMap, keyHolder);
contact.setId(keyHolder.getKey().longValue());
log.info("New contact inserted with id: " + contact.getId());
// Batch insert contact tel. details
List<ContactTelDetail> contactTelDetails =
contact.getContactTelDetails();
if (contactTelDetails != null) {
for (ContactTelDetail contactTelDetail: contactTelDetails) {
paramMap = new HashMap<String, Object>();
paramMap.put("contact_id", contact.getId());
paramMap.put("tel_type", contactTelDetail.getTelType());
paramMap.put("tel_number", contactTelDetail.getTelNumber());
insertContactTelDetail.updateByNamedParam(paramMap);
}
}
insertContactTelDetail.flush();
}
public List<Contact> findAllWithDetail() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(getDataSource());
String sql = "select c.id, c.first_name, c.last_name, c.birth_date" +
", t.id as contact_tel_id, t.tel_type, t.tel_number from contact c " +
"left join contact_tel_detail t on c.id = t.contact_id";
return jdbcTemplate.query(sql, new ContactWithDetailExtractor());
}
private static final class ContactWithDetailExtractor
implements ResultSetExtractor<List<Contact>> {
public List<Contact> extractData(ResultSet rs) throws
SQLException, DataAccessException {
Map<Long, Contact> map = new HashMap<Long, Contact>();
Contact contact = null;
while (rs.next()) {
Long id = rs.getLong("id");
contact = map.get(id);
if (contact == null) {  // new contact record
contact = new Contact();
contact.setId(id);
contact.setFirstName(rs.getString("first_name"));
contact.setLastName(rs.getString("last_name"));
contact.setBirthDate(rs.getDate("birth_date"));
contact.setContactTelDetails(new ArrayList<ContactTelDetail>());
map.put(id, contact);
}
// Process contact tel. detail (if exists)
Long contactTelDetailId = rs.getLong("contact_tel_id");
Search WWH :
Custom Search
Previous Page
Spring Framework 3 Topic Index
Next Page
Spring Framework 3 Bookmarks
Home