From 14e19cf9f560973962f4c3040a5f4202b7d2e292 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 09:42:57 +0900 Subject: [PATCH 01/14] =?UTF-8?q?feat:=20queryForObject=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 --- 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 02/14] =?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 03/14] =?UTF-8?q?feat:=20List=20with=20RowMapper=20?= =?UTF-8?q?=EA=B8=B0=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 04/14] =?UTF-8?q?feat:=20getLastName=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 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 05/14] =?UTF-8?q?feat:=20findCustomerByFirstName=20?= =?UTF-8?q?=EA=B8=B0=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 06/14] =?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 07/14] =?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 08/14] =?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; } } From c418289745ebfd8f15e2a4b68b166c842784d527 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:32:43 +0900 Subject: [PATCH 09/14] =?UTF-8?q?feat:=20Bean=20Registration=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 --- spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java b/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java index 871bf83e..e2490848 100644 --- a/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java +++ b/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java @@ -5,6 +5,7 @@ /* 어떤 어노테이션을 붙였을 때 Bean으로 생성되는지 학습하기 */ +@Component public class SpringBean { public String hello() { return "Hello"; From 8cc3294d824490a91cd5b014c66f6078d2152fea Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:33:29 +0900 Subject: [PATCH 10/14] =?UTF-8?q?feat:=20Bean=20Autowiring=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/bean/AutowiredBean.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java b/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java index 02e1010d..77731101 100644 --- a/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java +++ b/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java @@ -8,6 +8,7 @@ public class AutowiredBean { /* 어떤 방법으로 Component에 Bean을 주입하는지 학습하기 */ + @Autowired private SpringBean springBean; public String sayHello() { From 548b2b64d9cb6457e9a9bd9b7abd79eabcd3b1a5 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:35:06 +0900 Subject: [PATCH 11/14] =?UTF-8?q?feat:=20Constructor=20Injection=20?= =?UTF-8?q?=EA=B8=B0=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/di/ConstructorInjection.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java b/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java index 266e70b1..b9fdca1c 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java @@ -6,6 +6,10 @@ public class ConstructorInjection { private InjectionBean injectionBean; + public ConstructorInjection(InjectionBean injectionBean) { + this.injectionBean = injectionBean; + } + /* ConstructorInjection으로 InjectionBean 주입받기 */ From 9ee44543cab3d71489766dff7db16daeaf409f3a Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:36:52 +0900 Subject: [PATCH 12/14] =?UTF-8?q?feat:=20Setter=20Injection=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/di/SetterInjection.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java b/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java index 7dc3f162..422947d6 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java @@ -14,4 +14,9 @@ public class SetterInjection { public String sayHello() { return injectionBean.hello(); } + + @Autowired + public void setInjectionBean(InjectionBean injectionBean) { + this.injectionBean = injectionBean; + } } From 039f4bae11742f5789466e3e1d39573147b73723 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:38:49 +0900 Subject: [PATCH 13/14] =?UTF-8?q?feat:=20Field=20Injection=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/di/FieldInjection.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java b/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java index b2718b03..8f4ea0de 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java @@ -9,6 +9,7 @@ public class FieldInjection { /* FieldInjection으로 InjectionBean 주입받기 */ + @Autowired private InjectionBean injectionBean; public String sayHello() { From 5fbf628c015f3df9f1d8af8fe8034e14ed132001 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:44:06 +0900 Subject: [PATCH 14/14] =?UTF-8?q?feat:=20ComponentScan=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 --- .../src/main/java/cholog/scan/ContextConfiguration.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java b/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java index ba2e8eb8..1f069516 100644 --- a/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java +++ b/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java @@ -1,10 +1,14 @@ package cholog.scan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -@Configuration /* ComponentScan에 대해 학습하고, ComponenetScanBean을 Bean으로 등록하기 */ +@Configuration +@ComponentScan(basePackages = "cholog.scan") public class ContextConfiguration { + }