From 14e19cf9f560973962f4c3040a5f4202b7d2e292 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 09:42:57 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat:=20queryForObject=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..53181375 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); } /** From 65c16dbbacf880f8c075c42b162bae29d116ecc7 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 09:48:06 +0900 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20rowMapper=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 53181375..e3494048 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -46,9 +46,17 @@ public String getLastName(Long 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); } /** From 8089d7085688b15b7861f8e1f836ab8648370526 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 09:59:14 +0900 Subject: [PATCH 3/8] =?UTF-8?q?feat:=20List=20with=20RowMapper=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 e3494048..8892b52c 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -63,9 +63,17 @@ public Customer findCustomerById(Long 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; + }); } /** From 4d1f848620868064d8fdc8034432339d0d374730 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:02:26 +0900 Subject: [PATCH 4/8] =?UTF-8?q?feat:=20getLastName=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8892b52c..319b0952 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -39,7 +39,7 @@ 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); } /** From 7f28589e11602a158a77bdc7fbdb3db291785699 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:04:56 +0900 Subject: [PATCH 5/8] =?UTF-8?q?feat:=20findCustomerByFirstName=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 319b0952..d28e1e0c 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -80,8 +80,16 @@ public List findAllCustomers() { * 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); } } From a64984624106cf33b28dd8e43f2a911bf3717680 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:08:01 +0900 Subject: [PATCH 6/8] =?UTF-8?q?feat:=20insert=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java | 2 ++ 1 file changed, 2 insertions(+) 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..67695668 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -33,6 +33,8 @@ 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) From 400f85da8b780faf97cca8e3b047c5d42505d5d8 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:09:18 +0900 Subject: [PATCH 7/8] =?UTF-8?q?feat:=20delete=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 67695668..69760735 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -41,7 +41,7 @@ public void insert(Customer customer) { */ public int delete(Long id) { //todo: id에 해당하는 customer를 지우고, 해당 쿼리에 영향받는 row 수반환하기 - return 0; + return jdbcTemplate.update("delete from customers where id = ?", Long.valueOf(id)); } /** From 8f7ec577dc20b9aa5da69489bef4cc15596cce0a Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:13:59 +0900 Subject: [PATCH 8/8] =?UTF-8?q?feat:=20insertWithKeyHolder=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/UpdatingDAO.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 69760735..b5cc781d 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -48,13 +48,17 @@ public int delete(Long 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; } }