[Spring] MyBatis를 사용한 MVC 작업과정

Gammi·2023년 1월 20일
0

Spring

목록 보기
5/6

1. Controller


  • 컨트롤러에서 매핑 작업 수행

  • service 객체 자동 주입 필요


@Controller
public class XXXController {
  
  @Autowired
  private XXXService service;
  
  @GetMapping(value = "매핑할 주소") //또는
  @PostMapping(value = "매핑할 주소")
  public String 메서드명([매개변수...]) {
    // 서비스 객체 메서드 호출
    // 저장 데이터 있을 경우 Model 타입 파라미터 선언 및 addAttribute()로 저장
    return "포워딩할 경로";
    // 만약 Redirect방식일 경우
    // return "redirect:/포워딩 경로";
  }
}




2. Service


  • 서비스에서 작업 요청

  • mapper 객체 자동 주입 필요


@Service
public class XXXService {
  
  @Autowired
  private XXXMapper mapper;
  
  public 리턴타입 메서드명([매개변수 선언...]) throws Exception {
    // Mapper 객체 메서드 호출
    return mapper.메서드명([전달인자...]);
  }
}




3. Mapper 인터페이스


  • 추상메서드 정의

public interface XXXMapper {

	public 리턴타입 인터페이스명([전달인자...]);
	
}




4. Mapper.xml


  • 태그로 SQL 구문 작성

  • id 속성이 mapper 인터페이스명과 동일해야 함

  • 각 태그 사이에 실제 쿼리문 작성

  • 만능문자 파라미터(?)는 ? 기호 대신 #{파라미터명} 형태로 지정

    -> 구문 내의 만능문자 사용 위치에 #{파라미터명} 지정 시 파라미터명은 VO 객체의 변수명과 동일


⭐ Ex

<insert id="insertMember">
	INSERT INTO member
	VALUES (
		null
		, #{name}
		, #{id}
		, #{passwd}
		, #{email}
		, #{gender}
		, now()
		, 'N'
	)
</insert>
  • #{name}, #{id}, #{passwd}, #{email}, #{gender} 부분은 MemberMapper 인터페이스에서 파라미터로 전달받음

  • MemberVO 객체의 멤버변수명과 동일해야하며, 자동으로 해당 부분의 데이터 전달됨

  • insert, update, delete 태그를 통해 작업 수행할 경우 영향을 받은 레코드 수가 자동으로 리턴되며 리턴타입은 int 타입으로 자동 지정됨

profile
개발자가 되었어요⭐️

0개의 댓글