PersonService.java 3.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package io.zipcoder.persistenceapp.service;
  2. import io.zipcoder.persistenceapp.model.Person;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  5. import org.springframework.jdbc.core.JdbcTemplate;
  6. import org.springframework.jdbc.core.RowMapper;
  7. import org.springframework.stereotype.Service;
  8. import java.sql.JDBCType;
  9. import java.sql.ResultSet;
  10. import java.sql.SQLException;
  11. import java.util.Arrays;
  12. import java.util.Iterator;
  13. import java.util.List;
  14. /*
  15. Service speaks to the repo/jdbc template, controller speaks to service to get stuff
  16. */
  17. @Service
  18. public class PersonService {
  19. private final JDBCType[] types = {JDBCType.VARCHAR, JDBCType.VARCHAR, JDBCType.VARCHAR, JDBCType.DATE, JDBCType.SMALLINT };
  20. @Autowired
  21. JdbcTemplate jdbcTemplate;
  22. public PersonService() {}
  23. class PersonRowMapper implements RowMapper<Person> {
  24. @Override
  25. public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
  26. Person person = new Person();
  27. person.setId(rs.getLong("id"));
  28. person.setFirstName(rs.getString("first_name"));
  29. person.setLastName(rs.getString("last_name"));
  30. person.setMobile(rs.getString("mobile"));
  31. person.setBirthday(rs.getDate("birthday"));
  32. person.setHomeId(rs.getInt("home_id"));
  33. return person;
  34. }
  35. }
  36. public void add(Person p) {
  37. Object[] info = {p.getFirstName(), p.getLastName(), p.getMobile(), p.getBirthday(), p.getHomeId()};
  38. jdbcTemplate.update(
  39. "INSERT INTO person(first_name, last_name, mobile, birthday, home_ID)" +
  40. "VALUES (?, ?, ?, ?, ?)", info);
  41. }
  42. public void update(Person p) {
  43. Object[] info = {p.getFirstName(), p.getLastName(), p.getMobile(), p.getBirthday(), p.getHomeId()};
  44. jdbcTemplate.update(
  45. "update person set first_name = ?, last_name ?, mobile = ?, birthday = ?, home_ID = ?" +
  46. "VALUES (?, ?, ?, ?, ?)", info, types);
  47. }
  48. public void remove(Long id) {
  49. jdbcTemplate.update("DELETE FROM person WHERE id = ?", id);
  50. }
  51. public void removePeople(Iterable<Person> p) {
  52. p.forEach(person -> remove(person.getId()));
  53. }
  54. public Person findPersonById(Integer id) {
  55. return jdbcTemplate.queryForObject("SELECT * FROM PERSON WHERE ID=?", new Object[] {id},
  56. new BeanPropertyRowMapper<>(Person.class));
  57. }
  58. public List<Person> getAllPeople() {
  59. return jdbcTemplate.query("SELECT * FROM PERSON", new PersonRowMapper());
  60. }
  61. public List<Person> findPeopleByMobile(String mobile) {
  62. return jdbcTemplate.query("SELECT * FROM PERSON WHERE MOBILE=?", new Object[] {mobile},
  63. new PersonRowMapper());
  64. }
  65. public List<Person> findPeopleByLastName(String lastName) {
  66. return jdbcTemplate.query("SELECT * FROM PERSON WHERE LAST_NAME=?", new Object[] {lastName},
  67. new PersonRowMapper());
  68. }
  69. public List<Person> generateSurnameMap(String lastName) {
  70. return jdbcTemplate.query("SELECT * FROM PERSON WHERE LAST_NAME=?", new Object[] {lastName},
  71. new PersonRowMapper());
  72. }
  73. }