Jdbc Template

최지혜·2022년 10월 8일
0

db

목록 보기
4/5

Jdbc Template이 '드라이버 로딩, DB연결, 자원해제'를
다 해주기 때문에 우리는 SQL 작성 및 전송만 하면 됨.

org.springframework.jdbx.datasource.DriverDataSource

데이터베이스 연겨로가 관련된 정보를 가지고 있는 스프링이 가진 데이터 소스임!

첫번째 방법

private JdbcTemplate template;

public MemberDao() {
	dataSource = new pringframework.jdbx.datasource.DriverDataSource();
    dataSource..setDriverClassName(driver);
    dataSource.setUrl(url);
    dataSource.setUsername(userid);
    dataSource.setPassword(userpw);
    
    //데이터 소스 set
    
    template = new JdbcTemplate();
    template.setDataSource(dataSource);
    
    //템플릿에 넣어줌(이용할 수 있게)
}

@Override
public int memberInsert(Member member) {
	 int result = 0;
     
     String wql = "INSERT INTO member (memId, memPw, memMail) valuew (?,?,?)";
     // 우리가 해야할 것은 쿼리문 작성 뿐!
     result - template.update(sql, member.getMemId(), member.getMemPw(), member.getMemMail());
     //템플릿으로 이용만!
     return result;
}

하면, try~catch~finally 부분 다 필요없어짐.

2번째 방법

result = template.update(new PreparedStatementCreator() {
	@override
    public preparedStatement createPreParedStatement(Connection conn)
    	throws SQLException {
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, member.getMemId());
    pstmt.setString(2, member.getMemPw());
    pstmt.setString(3, member.getMemMail());
    
    return pstmt;
    }
}

3번째 방법

result = template.update(sql, new PreparedStatementSetterr() {
	@override
    public void setValues(preparedStatement pstmt)throws SQLException {
    	pstmt.setString(1, member.getMemId());
   	 	pstmt.setString(2, member.getMemPw());
    	pstmt.setString(3, member.getMemMail());
    }
}

2, 3번째 방법은 sql문이 외부에서 사용될 수 있기 때문에 final로 지정해주면 좋다!

final String sql = "INSERT INTO member (memId, memPw, memMail) values (?,?,?)";

select문

select문은 4가지 방법이 있다.

  • Setter 이용
  • Creator 이용(익명 클래스)
  • Mapper이용
  • 배열로 값을 넣어주는 방법
    members = template.query(sql, new Object[]{member.getMemId(), member.getMemPw()}, new RowMapper<Member>())
    난 맵퍼가 좀 맘에 들어서 맵퍼로 해봤다!
@Override
public Member meberSelect(final Member member) {
	List<Member> members = null;
  
    final String sql = "SELECT * FROM member WHERE memId = ? AND memPw = ?";
} 
  
  members = template.query(sql, new RowMapper<Memver>() {
  	@Overriede
  	public MEmber mapRow(ResultSet re, int rowNum) throws SQLException {
  		Member mem = new Member();
  		mem.setMemId(rs.getString("memId"));
  		mem.setMemPw(rs.getString("memPw"));
  		mem.setMemMail(rs.getString("memMail"));
     	mem.setMemPurcNum(rs.getString("memPurcNum"));
		return mem;  
  }
}, member.getMemId(), member.getMemPw());
profile
매일 성장하는 개발자

0개의 댓글