From 0ba7b98ef0c94d1478cdd5b0643dab4974a7c538 Mon Sep 17 00:00:00 2001 From: dayaelee Date: Sat, 3 Aug 2024 21:15:53 +0900 Subject: [PATCH 01/12] =?UTF-8?q?[8=EC=9B=94=201=EC=9D=BC=20=EC=88=99?= =?UTF-8?q?=EC=A0=9C]spring-mvc-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cholog/MemberController.java | 23 +++++++++++++++---- .../resources/static/{hi.html => index.html} | 0 .../{templates => static}/static.html | 0 3 files changed, 19 insertions(+), 4 deletions(-) rename spring-mvc-1/initial/src/main/resources/static/{hi.html => index.html} (100%) rename spring-mvc-1/initial/src/main/resources/{templates => static}/static.html (100%) diff --git a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java index 08322a4e..3a12f651 100644 --- a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java +++ b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java @@ -1,18 +1,33 @@ package cholog; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; @Controller public class MemberController { - - public String world() { + @GetMapping("/hello") + public String world(@RequestParam(name = "name", required = false) String name, Model model) { // TODO: /hello 요청 시 resources/templates/static.html 페이지가 응답할 수 있도록 설정하세요. // TODO: 쿼리 파라미터로 name 요청이 들어왔을 때 해당 값을 hello.html에서 사용할 수 있도록 하세요. - return null; + if (name == null){ + // 쿼리 파라미터가 없는 경우 + return "static"; + } else { + // 쿼리 파라미터가 있는 경우 + model.addAttribute("name", name); + return "hello"; + } + + } + @GetMapping("/json") + @ResponseBody public Person json() { // TODO: /json 요청 시 {"name": "brown", "age": 20} 데이터를 응답할 수 있도록 설정하세요. - return null; + return new Person("brown", 20); } } diff --git a/spring-mvc-1/initial/src/main/resources/static/hi.html b/spring-mvc-1/initial/src/main/resources/static/index.html similarity index 100% rename from spring-mvc-1/initial/src/main/resources/static/hi.html rename to spring-mvc-1/initial/src/main/resources/static/index.html diff --git a/spring-mvc-1/initial/src/main/resources/templates/static.html b/spring-mvc-1/initial/src/main/resources/static/static.html similarity index 100% rename from spring-mvc-1/initial/src/main/resources/templates/static.html rename to spring-mvc-1/initial/src/main/resources/static/static.html From 257d8a7528ca091d0a2542eeea3aae681bea82bc Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 5 Aug 2024 18:35:07 +0900 Subject: [PATCH 02/12] =?UTF-8?q?[spring-mvc-1]=20ivy.lee(=EC=9D=B4?= =?UTF-8?q?=EB=8B=A4=EC=98=88)=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C=EC=B6=9C?= =?UTF-8?q?=ED=95=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-mvc-1/initial/src/main/java/cholog/MemberController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java index 3a12f651..0a8199d8 100644 --- a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java +++ b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java @@ -16,7 +16,7 @@ public String world(@RequestParam(name = "name", required = false) String name, // 쿼리 파라미터가 없는 경우 return "static"; } else { - // 쿼리 파라미터가 있는 경우 + // 쿼리 파라미터가 있는 경우. model.addAttribute("name", name); return "hello"; } From 18c9ca4830463f3123e90d52533b449012173af7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 5 Aug 2024 21:25:58 +0900 Subject: [PATCH 03/12] =?UTF-8?q?[spring-mvc-2]=20ivy.lee(=EC=9D=B4?= =?UTF-8?q?=EB=8B=A4=EC=98=88)=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C=EC=B6=9C?= =?UTF-8?q?=ED=95=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cholog/MemberController.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/spring-mvc-2/initial/src/main/java/cholog/MemberController.java b/spring-mvc-2/initial/src/main/java/cholog/MemberController.java index 5a380e7a..927d98a4 100644 --- a/spring-mvc-2/initial/src/main/java/cholog/MemberController.java +++ b/spring-mvc-2/initial/src/main/java/cholog/MemberController.java @@ -5,12 +5,11 @@ import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicLong; + +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.*; @Controller public class MemberController { @@ -19,9 +18,9 @@ public class MemberController { private final AtomicLong index = new AtomicLong(1); @PostMapping("/members") - public ResponseEntity create() { + public ResponseEntity create(@RequestBody Member member) { // TODO: member 정보를 받아서 생성한다. - Member newMember = Member.toEntity(null, index.getAndIncrement()); + Member newMember = Member.toEntity(member, index.getAndIncrement()); members.add(newMember); return ResponseEntity.created(URI.create("/members/" + newMember.getId())).build(); } @@ -29,31 +28,32 @@ public ResponseEntity create() { @GetMapping("/members") public ResponseEntity> read() { // TODO: 저장된 모든 member 정보를 반환한다. - return null; + return new ResponseEntity<>(members, HttpStatus.OK); } @PutMapping("/members/{id}") - public ResponseEntity update() { + public ResponseEntity update(@PathVariable Long id, @RequestBody Member newMember) { // TODO: member의 수정 정보와 url 상의 id 정보를 받아 member 정보를 수정한다. Member member = members.stream() - .filter(it -> Objects.equals(it.getId(), null)) + .filter(it -> Objects.equals(it.getId(), id)) .findFirst() .orElseThrow(RuntimeException::new); - member.update(null); + member.update(newMember); + //return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); 이건 왜 안되는지? return null; } @DeleteMapping("/members/{id}") - public ResponseEntity delete() { + public ResponseEntity delete(@PathVariable Long id) { // TODO: url 상의 id 정보를 받아 member를 삭제한다. Member member = members.stream() - .filter(it -> Objects.equals(it.getId(), null)) + .filter(it -> Objects.equals(it.getId(), id)) .findFirst() .orElseThrow(RuntimeException::new); members.remove(member); - return null; + return new ResponseEntity<>(HttpStatus.NO_CONTENT); } } From 865a56d8cefa5590c8d263e924f28c099ab9e126 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 21:25:25 +0900 Subject: [PATCH 04/12] =?UTF-8?q?3.1=20Object=20with=20Count,=20customers?= =?UTF-8?q?=20=EB=94=94=EB=B9=84=EC=97=90=20=ED=8F=AC=ED=95=A8=EB=90=98?= =?UTF-8?q?=EC=96=B4=EC=9E=88=EB=8A=94=20row=EA=B0=80=20=EB=AA=87=EA=B0=9C?= =?UTF-8?q?=EC=9D=B8=EC=A7=80=20=ED=99=95=EC=9D=B8=ED=95=98=EB=8A=94=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 --- spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java | 3 ++- 1 file changed, 2 insertions(+), 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..fd45ee53 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,8 @@ public QueryingDAO(JdbcTemplate jdbcTemplate) { */ public int count() { //TODO : customers 디비에 포함되어있는 row가 몇개인지 확인하는 기능 구현 - return 0; + int rowCount = jdbcTemplate.queryForObject("select count(*) from customers", Integer.class); + return rowCount; } /** From 3feeae87d87188ea11be880bc4d3d639a0520586 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 21:42:26 +0900 Subject: [PATCH 05/12] =?UTF-8?q?3.2=20Object=20with=20Parameter,=20?= =?UTF-8?q?=EC=A3=BC=EC=96=B4=EC=A7=84=20Id=EC=97=90=20=ED=95=B4=EB=8B=B9?= =?UTF-8?q?=ED=95=98=EB=8A=94=20customers=EC=9D=98=20lastName=EC=9D=84=20?= =?UTF-8?q?=EB=B0=98=ED=99=98?= 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 | 5 ++--- 1 file changed, 2 insertions(+), 3 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 fd45ee53..2b86d0f1 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -30,7 +30,6 @@ public QueryingDAO(JdbcTemplate jdbcTemplate) { * public T queryForObject(String sql, Class requiredType) */ public int count() { - //TODO : customers 디비에 포함되어있는 row가 몇개인지 확인하는 기능 구현 int rowCount = jdbcTemplate.queryForObject("select count(*) from customers", Integer.class); return rowCount; } @@ -39,8 +38,8 @@ public int count() { * public T queryForObject(String sql, Class requiredType, @Nullable Object... args) */ public String getLastName(Long id) { - //TODO : 주어진 Id에 해당하는 customers의 lastName을 반환 - return null; + String lastName = jdbcTemplate.queryForObject("select last_name from customers where id = ?", String.class, id); + return lastName; } /** From 0bea06b7712cbf1e4b312c6c5ce4a1ac6c226c49 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 22:09:42 +0900 Subject: [PATCH 06/12] =?UTF-8?q?3.3=20Object=20with=20RowMapper,=20?= =?UTF-8?q?=EC=A3=BC=EC=96=B4=EC=A7=84=20Id=EC=97=90=20=ED=95=B4=EB=8B=B9?= =?UTF-8?q?=ED=95=98=EB=8A=94=20customer=EB=A5=BC=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=EB=A1=9C=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 15 +++++++++++++-- 1 file changed, 13 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 2b86d0f1..820188f3 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -47,8 +47,19 @@ public String getLastName(Long id) { */ public Customer findCustomerById(Long id) { String sql = "select id, first_name, last_name from customers where id = ?"; - //TODO : 주어진 Id에 해당하는 customer를 객체로 반환 - return null; + + Customer customer = jdbcTemplate.queryForObject( + sql, + (resultSet, rowNum) -> { + Customer customer1 = new Customer( + resultSet.getLong("id"), + resultSet.getString("fist_name"), + resultSet.getString("last_name") + ); + return customer1; + }, id); + + return customer; } /** From 4e08f372a142cac12d5ad578a909210f7e3870ad Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 22:21:36 +0900 Subject: [PATCH 07/12] =?UTF-8?q?4.1=20List=20with=20RowMapper,=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EB=90=9C=20=EB=AA=A8=EB=93=A0=20Customers?= =?UTF-8?q?=EB=A5=BC=20list=ED=98=95=ED=83=9C=EB=A1=9C=20=EB=B0=98?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 15 +++++++++++++-- 1 file changed, 13 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 820188f3..53491a07 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -67,8 +67,19 @@ public Customer findCustomerById(Long id) { */ public List findAllCustomers() { String sql = "select id, first_name, last_name from customers"; - //TODO : 저장된 모든 Customers를 list형태로 반환 - return null; + + List customers = jdbcTemplate.query( + sql, + (resultSet, rowNum) -> { + Customer customer = new Customer( + resultSet.getLong("id"), + resultSet.getString("first_name"), + resultSet.getString("last_name") + ); + return customer; + }); + + return customers; } /** From cfde8862d529a7f47f719c4447294c488a42c9a8 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 22:23:18 +0900 Subject: [PATCH 08/12] =?UTF-8?q?3.3=20Object=20with=20RowMapper,=20?= =?UTF-8?q?=EA=B3=BC=EC=A0=9C=20=EC=88=98=ED=96=89=ED=9B=84=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 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 53491a07..2597b6ef 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -48,18 +48,18 @@ public String getLastName(Long id) { public Customer findCustomerById(Long id) { String sql = "select id, first_name, last_name from customers where id = ?"; - Customer customer = jdbcTemplate.queryForObject( + Customer customers = jdbcTemplate.queryForObject( sql, (resultSet, rowNum) -> { - Customer customer1 = new Customer( + Customer customer = new Customer( resultSet.getLong("id"), - resultSet.getString("fist_name"), + resultSet.getString("first_name"), resultSet.getString("last_name") ); - return customer1; + return customer; }, id); - return customer; + return customers; } /** From 45ef260de2629581fd9635db73da568c2b329b52 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 22:58:03 +0900 Subject: [PATCH 09/12] =?UTF-8?q?5.1=20Update=20(INSERT),=20customer?= =?UTF-8?q?=EB=A5=BC=20=EB=94=94=EB=B9=84=EC=97=90=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=98=EA=B8=B0?= 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 | 3 ++- 1 file changed, 2 insertions(+), 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 e53c21ef..bc01b82e 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -32,7 +32,8 @@ public UpdatingDAO(JdbcTemplate jdbcTemplate) { * public int update(String sql, @Nullable Object... args) */ public void insert(Customer customer) { - //todo: customer를 디비에 저장하기 + String sql = "insert into customers (first_name, last_name) values (?, ?)"; + jdbcTemplate.update(sql, customer.getFirstName(), customer.getLastName()); } /** * public int update(String sql, @Nullable Object... args) From 9ee4f02e67f90c0854277171f13f8c005c30f14f Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 12 Aug 2024 23:09:56 +0900 Subject: [PATCH 10/12] =?UTF-8?q?4.1=20List=20with=20RowMapper,=20firstNam?= =?UTF-8?q?e=EC=9D=84=20=EA=B8=B0=EC=A4=80=EC=9C=BC=EB=A1=9C=20customer?= =?UTF-8?q?=EB=A5=BC=20list=ED=98=95=ED=83=9C=EB=A1=9C=20=EB=B0=98?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/QueryingDAO.java | 13 +++++++++++-- 1 file changed, 11 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 2597b6ef..e06d6755 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -87,7 +87,16 @@ public List findAllCustomers() { */ public List findCustomerByFirstName(String firstName) { String sql = "select id, first_name, last_name from customers where first_name = ?"; - //TODO : firstName을 기준으로 customer를 list형태로 반환 - return null; + + final RowMapper rowMapper = (resultSet, rowNum) -> { + Customer customer = new Customer( + resultSet.getLong("id"), + resultSet.getString("first_name"), + resultSet.getString("last_name")); + return customer; + }; + + List customers = jdbcTemplate.query(sql,rowMapper, firstName); + return customers; } } From b58ac3360148b4bb4df1689e9e6e75e60170449b Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Tue, 13 Aug 2024 14:23:01 +0900 Subject: [PATCH 11/12] =?UTF-8?q?5.2=20Update=20(DELETE),=20id=EC=97=90=20?= =?UTF-8?q?=ED=95=B4=EB=8B=B9=ED=95=98=EB=8A=94=20customer=EB=A5=BC=20?= =?UTF-8?q?=EC=A7=80=EC=9A=B0=EA=B3=A0,=20=ED=95=B4=EB=8B=B9=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=EC=97=90=20=EC=98=81=ED=96=A5=EB=B0=9B=EB=8A=94=20row?= =?UTF-8?q?=20=EC=88=98=EB=B0=98=ED=99=98=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/UpdatingDAO.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 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 bc01b82e..1c99af27 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -8,6 +8,8 @@ import java.sql.PreparedStatement; +import static java.lang.String.valueOf; + @Repository public class UpdatingDAO { private JdbcTemplate jdbcTemplate; @@ -39,8 +41,10 @@ public void insert(Customer customer) { * public int update(String sql, @Nullable Object... args) */ public int delete(Long id) { - //todo: id에 해당하는 customer를 지우고, 해당 쿼리에 영향받는 row 수반환하기 - return 0; + String sql = "delete from customers where id = ?"; + Integer affectedRow = jdbcTemplate.update(sql, Long.valueOf(id)); + + return affectedRow; } /** From b64c11331a864841d4dfa8f2f3c6567f20574c6d Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Tue, 13 Aug 2024 15:33:02 +0900 Subject: [PATCH 12/12] =?UTF-8?q?5.3=20KeyHolder,=20keyHolder=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=B4=20=ED=95=99=EC=8A=B5=ED=95=98=EA=B3=A0,=20Cu?= =?UTF-8?q?stomer=EB=A5=BC=20=EC=A0=80=EC=9E=A5=ED=9B=84=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=EB=90=9C=20Customer=EC=9D=98=20id=EB=A5=BC=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/UpdatingDAO.java | 9 ++++++++- 1 file changed, 8 insertions(+), 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 1c99af27..df78670c 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -54,7 +54,14 @@ 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( + sql, + new String[]{"id"}); + ps.setString(1, customer.getFirstName()); + ps.setString(2, customer.getLastName()); + return ps; + }, keyHolder); Long id = keyHolder.getKey().longValue();