프로젝트/selfmade Blog - V1 (deprecated)
6. 유저 CRUD 구현 및 테스트 데이터 삭제
zangsu_
2023. 8. 13. 21:08
유저 관련 기능은 앞서 만들어 뒀던 DAOContext의 기능을 그대로 가져다 쓸 것이기 때문에 코드만 올려 둔다.
@Repository
public class UserDAO {
//daoContext 선언 및 주입
Function<ResultSet, User> userMapper = rs ->{
User user = null;
try {
user = new User();
user.setId(rs.getString("id"));
user.setPassword(rs.getString("password"));
user.setIdx(rs.getInt("idx"));
} catch (SQLException e) {
e.printStackTrace();
}
return user;
};
public void save(User user) throws SQLException {
String sql = "insert into users (id, password) VALUES (?, ?)";
int generatedKey = daoContext
.executeSQLAndReturn(sql,
user.getId(),
user.getPassword());
user.setIdx(generatedKey);
}
public User findUserByIdx(int idx) throws SQLException {
String sql = "select * from users where idx = ?";
User user = daoContext.getObject(sql,
userMapper, idx);
return user;
}
public void update(User user) throws SQLException {
String sql =
"update users set id = ?, password = ? where idx = ?";
daoContext.update(sql, user.getId(),
user.getPassword(),
Integer.toString(user.getIdx()));
}
public void delete(int idx) throws SQLException {
String sql = "delete from users where idx = ?";
daoContext.delete(sql, Integer.toString(idx));
}
}
테스트 데이터 정리
지금은 테스트 코드들을 실행할 때 마다 테스트 데이터들이 데이터 베이스에 남아 있게 된다.
각각의 테스트가 끝난 이후 해당 테스트에 대한 데이터가 남아있을 필요가 없으므로 매 테스트가 끝날 때 마다 테스트 데이터를 삭제시켜 주자.
//PostingDAOTest
@AfterEach
public void cleanUp() throws SQLException {
postingDAO.delete(posting.getIdx());
userDAO.delete(user.getIdx());
}
//UserDAOTest
@AfterEach
public void cleanUp() throws SQLException {
userDAO.delete(user.getIdx());
}