brograming
[Spring]05_10 MemberDao.java 의존성 주입, resultmap, 본문
*의존성 주입(DI)
의존성 주입을 사용하는 이유 :
new를 사용해서 객체를 생성하는 결합력 있는 코드를 사용하지 않는다.
코드가 변경이 될 때 코드에 전혀 손을 대지 않고 설정파일에서 설정만 다르게 해서 동작을 다르게 한다.
필요한 객체를 생성자나 setter를 이용해서
@Autowired가 JdbcTemplate temp를 찾아서 변경사항이 있으면 알아서 변경, 처리해줌
package com.example.demo.member;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
@Repository
public class MemberDao {
@Autowired // 의존성 주입
private JdbcTemplate temp; // db 처리 도우미. 스프링에서 제공하는 클래스. 객체를 생성하는 new생략(스프링 전체에도 해당 new (x))
//생성자 의존성 주입(DI)
public MemberDao(JdbcTemplate temp) {
this.temp = temp;
}
//setter 의존성 주입(DI)
public void setTemp(JdbcTemplate temp) {
this.temp = temp;
}
*resultMap
검색한 결과를 vo에 맵핑. insert.update,delete(쓰기 작업할 때는 필요없음). 검색할 때만 필요한 클래스
RowMapper인터페이스를 상속받는다. 한줄 검색할때마다 결과를 <MemberVo>에 담는다.
매 줄마다 public MemberVo mapRow 메서드 호출해서 결과 처리(기존 dao에서 selectAll메서드에서
ResultSet rs =pstmt.excuteQuery(); 후에 while(rs.next(){ ...}역할을 한다.
JdbsTemplate가 int rowNum (줄번호)를 사용해서
m.setId(rs.getString(1));
m.setPwd(rs.getString(2));
m.setName(rs.getString(3));
m.setEmail(rs.getString(4));
return m;
(위 다섯줄은 아래 코드와 같다.
return new MemberVo(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4));
담는다.
// 검색한 결과를 vo에 어떻게 매핑할지 지정하는 클래스
public class MemberMapper implements RowMapper<MemberVo>{ // RowMapper : 인터페이스.한줄씩 매핑 <MemberVo>제너릭으로 템플릿 지정
@Override
public MemberVo mapRow(ResultSet rs, int rowNum) throws SQLException { // int rowNum : 줄번호
// TODO Auto-generated method stub
MemberVo m = new MemberVo();
m.setId(rs.getString(1));
m.setPwd(rs.getString(2));
m.setName(rs.getString(3));
m.setEmail(rs.getString(4));
return m;
}
}
*spl문을 실행하는 메서드들
jdbcTemplate.update():insert,update,delete문 실행
jdbcTemplate.queryForObject():primary key로 검색 / 한줄 검색
jdbcTemplate.query(): 여러행검색'Kosta' 카테고리의 다른 글
| [Spring]05_12 (0) | 2023.05.12 |
|---|---|
| [Spring]05_11 jquery,ajax로 댓글달기 (0) | 2023.05.11 |
| [Spring]05_09 (0) | 2023.05.10 |
| [Spring] 05_08 (0) | 2023.05.08 |
| 공공데이터 활용 url로 정보 가져오기(Weather)_Day43 (0) | 2023.04.19 |