예제 프로젝트 개요

mvc-mybatis 예제 프로젝트 작업 순서

데이터 엑세스 층 개발
MemberDAO.java

MemberDAOImpl.java


스프링 빈 등록 (MemberDAO.java)

MyBatis를 이용하여 SQL 사용하는 방식 3가지
- XML 만을 이용 -> SQL문 설정 : DAO에서 XML을 찾아서 실행하는 코드 작성
- 장점 : SQL문의 별도의 XML 파일로 관리하여 유지보수 적합
- 단점 : 코드의 양이 많아짐
- 애노테이션과 인터페이스만을 이용하여 SQL 문을 작성
- 장점 : DAO 없이 개발 가능하여 생산성 증가
- 단점 : 매번 수정시 컴파일 필요
- 인터페이스와 XML로 작성된 SQL 문의 활용
- 장점 : 간단한 SQL은 인터페이스, 복잡한 SQL은 XML로 처리 -> 유연성 확보
- 단점 : 2가지 방식의 혼재로 유지보수 작업에 부적합
실습은 SQL Mapper XML를 이용하는 방식으로 진행
매핑 파일(Mapper)작성 - studentMapper.xml
- root-context.xml의 mapperLocations 속성에 파일 위치 설정
- Mapper는 SQL 문을 저장하는 곳
- Mapper를 통해서 SQL문과 객체를 연결
- 파일 명은 Mapper 인터페이스 명으로 한다.


SQL 삽입 값의 연계 방법 : #{바인드 변수 명}을 이용한 바인드 변수 지정
1. 파라미터가 자바빈즈 객체일 경우 #{num}은 getNum() or setNum()을 의미

2. 파라미터가 하나이고, 기본 자료형이나 문자일 경우 값을 그대로 전달

3. 파라미터가 Map일 경우 #{num}은 Map객체의 키 값이 'num' 인 값을 찾음
SQL의 실행 결과와 반환 값이 되는 객체 간의 매핑은 마이바티스에 의해 자동적으로 이루어짐
studentMapper.xml

CRUD 조작
- Mapper의 SQL 반환 값에 따라 DAO객체의 메서드 타입이 결정
- INSERT : 등록 건수(int/long) or 등록 여부(boolean), 필요 없음(void)
- UPDATE : 갱신 건수 1건 (boolean), 그 외 갱신 건수(int/long), 필요 없음(void)
- DELETE : tkrwp 건수 1건 (boolean), 그 외 갱신 건수(int/long), 필요 없음(void)
- READ : SQL 반환 값은 자동적으로 객체와 매핑
단위 테스트3 - MemberDAOTest.java
- 회원 정보 관리 기능 정상 기능

비즈니스 로직 층 개발
MemberService.java

MemberServiceImpl.java

스프링 빈 등록 (MemberService.java)

MemberController.java 컨트롤러
(jsp 소스코드는 "스프링 MVC 프로젝트 - memberController" 블로그에 있습니다.)
- 학생목록 조회, 학생정보 조회 기능
- 학생정보 등록, 학생정보 수정 기능

컨트롤러 - 학생 목록 조회


컨트롤러 - 학생정보 조회


컨드롤러 - 학생정보 등록



컨트롤러 - 학생정보 수정


스프링 빈 등록 (MemberController.java)
