diff --git a/spring-jdbc-1/complete/src/test/java/cholog/QueryingDaoTest.java b/spring-jdbc-1/complete/src/test/java/cholog/QueryingDaoTest.java index fb399ff9..82bcbc44 100644 --- a/spring-jdbc-1/complete/src/test/java/cholog/QueryingDaoTest.java +++ b/spring-jdbc-1/complete/src/test/java/cholog/QueryingDaoTest.java @@ -62,4 +62,11 @@ void findAllCustomers() { assertThat(customers).hasSize(4); } + + @Test + void findCustomerByFirstName() { + List customers = queryingDAO.findCustomerByFirstName("Josh"); + + assertThat(customers).hasSize(2); + } } 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 f9c9fa35..6f299728 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/QueryingDAO.java @@ -14,6 +14,7 @@ public QueryingDAO(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } + /* private final RowMapper actorRowMapper = (resultSet, rowNum) -> { Customer customer = new Customer( resultSet.getLong("id"), @@ -22,21 +23,23 @@ public QueryingDAO(JdbcTemplate jdbcTemplate) { ); return customer; }; + 추후 rowMapper에 대해 학습해보고 이용해보기 + */ /** * public T queryForObject(String sql, Class requiredType) */ public int count() { - String sql = "select count(*) from customers"; - return jdbcTemplate.queryForObject(sql, Integer.class); + //TODO : customers 디비에 포함되어있는 row가 몇개인지 확인하는 기능 구현 + return 0; } /** * public T queryForObject(String sql, Class requiredType, @Nullable Object... args) */ public String getLastName(Long id) { - String sql = "select last_name from customers where id = ?"; - return jdbcTemplate.queryForObject(sql, String.class, id); + //TODO : 주어진 Id에 해당하는 customers의 lastName을 반환 + return null; } /** @@ -44,16 +47,8 @@ public String getLastName(Long id) { */ public Customer findCustomerById(Long id) { String sql = "select id, first_name, last_name from customers where id = ?"; - return jdbcTemplate.queryForObject( - sql, - (resultSet, rowNum) -> { - Customer customer = new Customer( - resultSet.getLong("id"), - resultSet.getString("first_name"), - resultSet.getString("last_name") - ); - return customer; - }, id); + //TODO : 주어진 Id에 해당하는 customer를 객체로 반환 + return null; } /** @@ -61,16 +56,8 @@ public Customer findCustomerById(Long id) { */ public List findAllCustomers() { String sql = "select id, first_name, last_name from customers"; - return jdbcTemplate.query( - sql, - (resultSet, rowNum) -> { - Customer customer = new Customer( - resultSet.getLong("id"), - resultSet.getString("first_name"), - resultSet.getString("last_name") - ); - return customer; - }); + //TODO : 저장된 모든 Customers를 list형태로 반환 + return null; } /** @@ -78,6 +65,7 @@ public List findAllCustomers() { */ public List findCustomerByFirstName(String firstName) { String sql = "select id, first_name, last_name from customers where first_name = ?"; - return jdbcTemplate.query(sql, actorRowMapper, firstName); + //TODO : firstName을 기준으로 customer를 list형태로 반환 + return null; } } 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 3076dca7..e53c21ef 100644 --- a/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java +++ b/spring-jdbc-1/initial/src/main/java/cholog/UpdatingDAO.java @@ -16,6 +16,7 @@ public UpdatingDAO(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } + /* private final RowMapper actorRowMapper = (resultSet, rowNum) -> { Customer customer = new Customer( resultSet.getLong("id"), @@ -24,20 +25,21 @@ public UpdatingDAO(JdbcTemplate jdbcTemplate) { ); return customer; }; + 추후 rowMapper에 대해 학습해보고 이용해보기 + */ /** * public int update(String sql, @Nullable Object... args) */ public void insert(Customer customer) { - String sql = "insert into customers (first_name, last_name) values (?, ?)"; - jdbcTemplate.update(sql, customer.getFirstName(), customer.getLastName()); + //todo: customer를 디비에 저장하기 } /** * public int update(String sql, @Nullable Object... args) */ public int delete(Long id) { - String sql = "delete from customers where id = ?"; - return jdbcTemplate.update(sql, Long.valueOf(id)); + //todo: id에 해당하는 customer를 지우고, 해당 쿼리에 영향받는 row 수반환하기 + return 0; } /** @@ -45,16 +47,9 @@ public int delete(Long id) { */ public Long insertWithKeyHolder(Customer customer) { String sql = "insert into customers (first_name, last_name) values (?, ?)"; - KeyHolder keyHolder = new GeneratedKeyHolder(); - 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); + + //todo : keyHolder에 대해 학습하고, Customer를 저장후 저장된 Customer의 id를 반환하기 Long id = keyHolder.getKey().longValue(); diff --git a/spring-jdbc-1/initial/src/test/java/cholog/QueryingDaoTest.java b/spring-jdbc-1/initial/src/test/java/cholog/QueryingDaoTest.java index fb399ff9..48215181 100644 --- a/spring-jdbc-1/initial/src/test/java/cholog/QueryingDaoTest.java +++ b/spring-jdbc-1/initial/src/test/java/cholog/QueryingDaoTest.java @@ -27,9 +27,10 @@ void setUp() { jdbcTemplate.execute("CREATE TABLE customers(" + "id SERIAL, first_name VARCHAR(255), last_name VARCHAR(255))"); - List splitUpNames = Arrays.asList("John Woo", "Jeff Dean", "Josh Bloch", "Josh Long").stream() - .map(name -> name.split(" ")) - .collect(Collectors.toList()); + List splitUpNames = Arrays.asList("John Woo", "Jeff Dean", "Josh Bloch", "Josh Long") + .stream() + .map(name -> name.split(" ")) + .collect(Collectors.toList()); jdbcTemplate.batchUpdate("INSERT INTO customers(first_name, last_name) VALUES (?,?)", splitUpNames); } @@ -62,4 +63,11 @@ void findAllCustomers() { assertThat(customers).hasSize(4); } + + @Test + void findCustomerByFirstName() { + List customers = queryingDAO.findCustomerByFirstName("Josh"); + + assertThat(customers).hasSize(2); + } }