diff --git a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java index 6f299728..d28e1e0c 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -31,7 +31,7 @@ public QueryingDAO(JdbcTemplate jdbcTemplate) { */ public int count() { //TODO : customers 디비에 포함되어있는 row가 몇개인지 확인하는 기능 구현 - return 0; + return jdbcTemplate.queryForObject("select count(*) from customers", Integer.class); } /** @@ -39,33 +39,57 @@ public int count() { */ public String getLastName(Long id) { //TODO : 주어진 Id에 해당하는 customers의 lastName을 반환 - return null; + return jdbcTemplate.queryForObject("select last_name from customers where id = ?", String.class, id); } /** * public T queryForObject(String sql, RowMapper rowMapper, @Nullable Object... args) */ public Customer findCustomerById(Long id) { - String sql = "select id, first_name, last_name from customers where id = ?"; //TODO : 주어진 Id에 해당하는 customer를 객체로 반환 - return null; + return jdbcTemplate.queryForObject( + "select id, first_name, last_name from customers where id = ?", + (resultSet, rowNum) -> { + Customer customer = new Customer( + resultSet.getLong("id"), + resultSet.getString("first_name"), + resultSet.getString("last_name") + ); + return customer; + }, id); } /** * public List query(String sql, RowMapper rowMapper) */ public List findAllCustomers() { - String sql = "select id, first_name, last_name from customers"; //TODO : 저장된 모든 Customers를 list형태로 반환 - return null; + return jdbcTemplate.query( + "select id, first_name, last_name from customers", + (resultSet, rowNum) -> { + Customer customer = new Customer( + resultSet.getLong("id"), + resultSet.getString("first_name"), + resultSet.getString("last_name") + ); + return customer; + }); } /** * public List query(String sql, RowMapper rowMapper, @Nullable Object... args) */ public List findCustomerByFirstName(String firstName) { - String sql = "select id, first_name, last_name from customers where first_name = ?"; //TODO : firstName을 기준으로 customer를 list형태로 반환 - return null; + return jdbcTemplate.query( + "select id, first_name, last_name from customers where first_name = ?", + (resultSet, rowNum) -> { + Customer customer = new Customer( + resultSet.getLong("id"), + resultSet.getString("first_name"), + resultSet.getString("last_name") + ); + return customer; + }, firstName); } } diff --git a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java index e53c21ef..b5cc781d 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -33,26 +33,32 @@ public UpdatingDAO(JdbcTemplate jdbcTemplate) { */ public void insert(Customer customer) { //todo: customer를 디비에 저장하기 + jdbcTemplate.update("insert into customers (first_name, last_name) values (?, ?)", + customer.getFirstName(), customer.getLastName()); } /** * public int update(String sql, @Nullable Object... args) */ public int delete(Long id) { //todo: id에 해당하는 customer를 지우고, 해당 쿼리에 영향받는 row 수반환하기 - return 0; + return jdbcTemplate.update("delete from customers where id = ?", Long.valueOf(id)); } /** * public int update(final PreparedStatementCreator psc, final KeyHolder generatedKeyHolder) */ public Long insertWithKeyHolder(Customer customer) { - String sql = "insert into customers (first_name, last_name) values (?, ?)"; KeyHolder keyHolder = new GeneratedKeyHolder(); - - //todo : keyHolder에 대해 학습하고, Customer를 저장후 저장된 Customer의 id를 반환하기 + jdbcTemplate.update(connection -> { + PreparedStatement ps = connection.prepareStatement( + "insert into customers (first_name, last_name) values (?, ?)", + new String[]{"id"}); + ps.setString(1, customer.getFirstName()); + ps.setString(2, customer.getLastName()); + return ps; + }, keyHolder); Long id = keyHolder.getKey().longValue(); - - return keyHolder.getKey().longValue(); + return id; } }