-
Notifications
You must be signed in to change notification settings - Fork 66
/
Copy pathMemberDao.java
67 lines (59 loc) · 2.33 KB
/
MemberDao.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package roomescape.member;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;
@Repository
public class MemberDao {
private JdbcTemplate jdbcTemplate;
public MemberDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public Member save(Member member) {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
var ps = connection.prepareStatement("INSERT INTO member(name, email, password, role) VALUES (?, ?, ?, ?)", new String[]{"id"});
ps.setString(1, member.getName());
ps.setString(2, member.getEmail());
ps.setString(3, member.getPassword());
ps.setString(4, member.getRole());
return ps;
}, keyHolder);
return new Member(keyHolder.getKey().longValue(), member.getName(), member.getEmail(), "USER");
}
public Member findByEmailAndPassword(String email, String password) {
return jdbcTemplate.queryForObject(
"SELECT id, name, email, role FROM member WHERE email = ? AND password = ?",
(rs, rowNum) -> new Member(
rs.getLong("id"),
rs.getString("name"),
rs.getString("email"),
rs.getString("role")
),
email, password
);
}
public Member findByName(String name) {
return jdbcTemplate.queryForObject(
"SELECT id, name, email, role FROM member WHERE name = ?",
(rs, rowNum) -> new Member(
rs.getLong("id"),
rs.getString("name"),
rs.getString("email"),
rs.getString("role")
),
name
);
}
public Member findById(final Long memberId) {
return jdbcTemplate.queryForObject("SELECT id, name, email, role FROM member WHERE id = ?",
(rs, rowNum) -> new Member(
rs.getLong("id"),
rs.getString("name"),
rs.getString("email"),
rs.getString("role")
),
memberId
);
}
}