Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

brograming

[Spring]05_10 MemberDao.java 의존성 주입, resultmap, 본문

Kosta

[Spring]05_10 MemberDao.java 의존성 주입, resultmap,

brograming 2023. 5. 10. 17:27

*의존성 주입(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