본문 바로가기

IT I 프로그래밍/자바 I 스프링 DB

[7] 스프링(Spring Tools 4) DB : 회원목록 만들기

[7] 스프링(Spring Tools 4) DB : 회원목록 만들기

 

회원목록 만들기 필수 인터페이스 : RowMapper

: DB로부터 가져오는 결과를 받는 인터페이스이다. 즉, DB로부터 가져오는 결과를 메서드로 뽑아내서 나중에 rs를 포함하고 있는 녀석이다. 따라서, 인터페이스이므로 반드시 구현해줘야한다.

*update 메서드와 query / qureryForObject 메서드 차이
- update() 메서드 : insert/update/delete는 실제 database가 변경되므로 update 메서드를 사용. 결과(메서드의 리턴값)는 역시나 int이다
- query() / qureryForObject() 메서드 : select일 경우에는 사용하는 메서드가 2종류이다.
  1) query() : Servelt에서 Vector<Dto>와 같은 타입으로 처리가능하다. (db에서 여러 줄을 가져올 때 사용)
  2) qureryForObject() => Servelt에서 Dto와 같은 타입으로 처리가능 (db에서 한 줄만 가져올 때 또는 한 컬럼)

JdbcTmp에는 select의 각 메서드의 결과를 DTO 객체로 받을수 있도록 만들수 있다. RowMapper 인터페이스 이며 이 인터페이스를 구현하면 결과를 DTO 타입(객체 자체로 )으로 받을 수 있다.

JdbcTmp에는 select의 각 메서드의 결과를 DTO 객체로 받을수 있도록 만들수 있다.

RowMapper 인터페이스이며 이 인터페이스를 구현하면 결과를 DTO 타입(객체 자체로)으로 받을 수 있다.

 

1. RowMapper만들기(SpMemberDAO.java)

// 1-1. RowMapper 구현

// inner class
class MemberMapper implements RowMapper<SpMemberDTO>{
   @Override
   public SpMemberDTO mapRow(ResultSet rs, int rowNum) throws SQLException {

// 1-2. 빈 생성자 만들기 (SpMemberDTO.java)
private String name;
private String email;
public SpmemberDTO() {}

// 1-3. SpMemberDTO 객체 만들기

   SpMemberDTO  dto = new SpMemberDTO();

   dto.setIdx(rs.getInt("idx")); // rs가 매개변수로 있으므로 getInt("idx")해서 idx를 뽑아온다. 1째줄이라 숫자1 써도 된다.
   dto.setId(rs.getString("id"));
   dto.setPw(rs.getString("pw"));
   dto.setName(rs.getString("name"));
   dto.setEmail(rs.getString("email"));
   // rs.next()필요없이 한 줄에 대해서 처리할 수 있는 RowMap만 설정하면된다.   

   return dto; // 이렇게 만들어진 결과를 dto로 가져오고 이것을 리턴해준다.
  }
}