Skip to content

Commit 5c3bc77

Browse files
committed
JDBC 구현 slipp#7
1 parent 26fbe6d commit 5c3bc77

File tree

4 files changed

+127
-45
lines changed

4 files changed

+127
-45
lines changed

src/main/java/next/dao/JdbcTemplate.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import java.sql.Connection;
44
import java.sql.PreparedStatement;
5+
import java.sql.ResultSet;
56
import java.sql.SQLException;
7+
import java.util.ArrayList;
8+
import java.util.List;
69

710
import core.jdbc.ConnectionManager;
811
import next.model.User;
@@ -27,5 +30,39 @@ void update(String query) throws SQLException {
2730
}
2831
}
2932

33+
List query(String query) throws SQLException {
34+
ArrayList<Object> list = new ArrayList<Object>();
35+
Connection con = null;
36+
PreparedStatement pstmt = null;
37+
ResultSet rs = null;
38+
39+
try {
40+
con = ConnectionManager.getConnection();
41+
pstmt = con.prepareStatement(query);
42+
setValues(pstmt);
43+
rs = pstmt.executeQuery();
44+
45+
while(rs.next()) {
46+
list.add(mapRow(rs));
47+
}
48+
49+
return list;
50+
} finally {
51+
if (rs != null) {
52+
rs.close();
53+
}
54+
if (pstmt != null) {
55+
pstmt.close();
56+
}
57+
if (con != null) {
58+
con.close();
59+
}
60+
}
61+
}
62+
63+
Object queryForObject(String query) {
64+
return null;
65+
}
3066
abstract void setValues(PreparedStatement pstmt) throws SQLException;
67+
abstract Object mapRow(ResultSet rs) throws SQLException;
3168
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package next.dao;
2+
3+
import java.sql.Connection;
4+
import java.sql.PreparedStatement;
5+
import java.sql.ResultSet;
6+
import java.sql.SQLException;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
import core.jdbc.ConnectionManager;
11+
import next.model.User;
12+
13+
public abstract class SelectJdbcTemplate {
14+
List query(String query) throws SQLException {
15+
ArrayList<User> list = new ArrayList<User>();
16+
Connection con = null;
17+
PreparedStatement pstmt = null;
18+
ResultSet rs = null;
19+
20+
try {
21+
con = ConnectionManager.getConnection();
22+
pstmt = con.prepareStatement(query);
23+
setValue(pstmt);
24+
rs = pstmt.executeQuery();
25+
26+
while(rs.next()) {
27+
list.add(new User(rs.getString("userId"), rs.getString("password"), rs.getString("name"), rs.getString("email")));
28+
}
29+
30+
return list;
31+
} finally {
32+
if (rs != null) {
33+
rs.close();
34+
}
35+
if (pstmt != null) {
36+
pstmt.close();
37+
}
38+
if (con != null) {
39+
con.close();
40+
}
41+
}
42+
}
43+
44+
Object queryForObject(String query) throws SQLException {
45+
return null;
46+
}
47+
48+
abstract void setValue(PreparedStatement pstmt);
49+
abstract Object mapRow(ResultSet rs);
50+
}

src/main/java/next/dao/UpdateJdbcTemplate.java

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,5 @@
88
import next.model.User;
99

1010
public abstract class UpdateJdbcTemplate {
11-
static void update(User user, UserDao userDao) throws SQLException{
12-
Connection con = null;
13-
PreparedStatement pstmt = null;
14-
try {
15-
con = ConnectionManager.getConnection();
16-
pstmt = con.prepareStatement(userDao.createQueryForUpdate());
17-
userDao.setValuesForUpdate(user, pstmt);
18-
pstmt.executeUpdate();
19-
} finally {
20-
if (pstmt != null) {
21-
pstmt.close();
22-
}
23-
24-
if (con != null) {
25-
con.close();
26-
}
27-
}
28-
}
29-
30-
abstract void setValuesForUpdate(User user, PreparedStatement pstmt);
31-
abstract String createQueryUpdate();
11+
3212
}

src/main/java/next/dao/UserDao.java

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,6 @@
1111
import next.model.User;
1212

1313
public class UserDao {
14-
15-
void setValuesForInsert(User user, PreparedStatement pstmt) throws SQLException {
16-
pstmt.setString(1, user.getUserId());
17-
pstmt.setString(2, user.getPassword());
18-
pstmt.setString(3, user.getName());
19-
pstmt.setString(4, user.getEmail());
20-
}
21-
22-
void setValuesForUpdate(User user, PreparedStatement pstmt) throws SQLException {
23-
pstmt.setString(4, user.getUserId());
24-
pstmt.setString(1, user.getPassword());
25-
pstmt.setString(2, user.getName());
26-
pstmt.setString(3, user.getEmail());
27-
}
28-
29-
String createQueryForInsert() {
30-
return "INSERT INTO USERS VALUES (?,?,?,?)";
31-
}
32-
33-
String createQueryForUpdate() {
34-
return "UPDATE USERS SET password = ?, name = ?, email = ? WHERE userid = ?";
35-
}
36-
3714
public void insert(User user) throws SQLException {
3815
String query = "INSERT INTO USERS VALUES (?,?,?,?)";
3916
JdbcTemplate insertJdbc = new JdbcTemplate() {
@@ -44,15 +21,53 @@ void setValues(PreparedStatement pstmt) throws SQLException {
4421
pstmt.setString(3, user.getName());
4522
pstmt.setString(4, user.getEmail());
4623
}
24+
25+
@Override
26+
Object mapRow(ResultSet rs) {
27+
// TODO Auto-generated method stub
28+
return null;
29+
}
4730
};
4831
insertJdbc.update(query);
4932
}
5033

5134
public void update(User user) throws SQLException {
52-
UpdateJdbcTemplate.update(user, new UserDao());
35+
String query = "UPDATE USERS SET password = ?, name = ?, email = ? WHERE userid = ?\";\n";
36+
JdbcTemplate insertJdbc = new JdbcTemplate() {
37+
@Override
38+
void setValues(PreparedStatement pstmt) throws SQLException {
39+
pstmt.setString(4, user.getUserId());
40+
pstmt.setString(1, user.getPassword());
41+
pstmt.setString(2, user.getName());
42+
pstmt.setString(3, user.getEmail());
43+
}
44+
45+
@Override
46+
Object mapRow(ResultSet rs) {
47+
// TODO Auto-generated method stub
48+
return null;
49+
}
50+
};
51+
insertJdbc.update(query);
5352
}
5453

5554
public List<User> findAll() throws SQLException {
55+
String query = "SELECT userId, password, name, email FROM USERS";
56+
JdbcTemplate findJdbc = new JdbcTemplate() {
57+
58+
@Override
59+
void setValues(PreparedStatement pstmt) throws SQLException {
60+
// TODO Auto-generated method stub
61+
62+
}
63+
64+
@Override
65+
Object mapRow(ResultSet rs) throws SQLException {
66+
return new User(rs.getString("userId"), rs.getString("password"), rs.getString("name"), rs.getString("email"));
67+
}
68+
69+
};
70+
5671
// TODO 구현 필요함.
5772
ArrayList<User> list = new ArrayList<User>();
5873
Connection con = null;

0 commit comments

Comments
 (0)