기본 시동파일을 config 폴더로 옮기고
동일 폴더에 contextConfiguration 클래스를만든다
스프링 컨테어니에게 전체적으로 들어가는 요청을 할 떄 사용
붙일 어노테이션
@Configuration
@ComponentScan("com.greedy.curd") -> 스캔할 영역설정
Mapper파일을 등록할 다른 설정 클래스를 만든다
(mybatis와 관련된)
MybatisConfiguration 클래스를 만든다.
붙일 어노테이션
@Configuration
@MapperScan(basePackage="com.greedy.crud", annotationClass = Mapper.class)
-> Mapper 어노테이션이 붙은 파일을 스캔
ibatis로 임폴트
MenuMapper 인터페이스 작성(어떤 형태의 기능이다 반환값, 메소드의 이름, 매객변수 같은것을 설정해 놓을 수 있는 공간)
@Mapper 어노테이션
수행할 메소드 적어준다
EX. List findAllMenu();
main/resources하위에
mappers폴더를 만들고 menuMapper.xml파일 작성
namespace 를 연결할dao파일과 동일하게 경로 일치하게 작성
mybatis:
mapper-lacations: mappers/**/*.xml
menuMapper.xml에 매퍼 구문 작성
resultMap작성
id 고유값으로 처리하는 속성
result 중복값이 있어도 상관없는 속성들
property: MenuDTO의 필드명 작성
column : 조회되는 컬럼의 명칭
select id = "findAllMenu" resultMap="menuResultMap"
findAllMenu : 메소드 이름과 동일하게 작성
resultMap : 필드명과 컬럼의 매칭에 필요한 설정
셀렉트 구문 작성
-----------------> 테스트 수행
기능에대한 부분을 트랙잭션을 컨트롤할(기능단위의 비지니스 로직을 작성할) 서비스 로직 만들기
인터페이스를 상속받는 구조로 만듦
model.service에
MenuService 인터페이스 생성
public interface MenuService
List<MenuDTO> findAllMenu();
위 기능에 대해서 기능을 실제로 수행할 클래스 생성
model.service에
MenuServiceImpl 클래스 생성
@Service("menuService")
*스프링컨테이너가 객체생성 등 대신 작업하도록 어노테이션 붙여주고
이름 설정해줌("설정할 이름")
public class MenuServiceImpl implements menuService
private final MenuMapper menuMapper;
@Autowired
public MenuServiceImpl(MenuMapper menuMapper)
this.menuMapper = menuMapper;
@Override
*상속받은 메소드가 구현되어있지 않으니 오버라이드하여 작성
public List findAllMenu()
return menuMapper.findAllMenu();
-----------------> 테스트 수행
컨트롤러 클래스 작성
controller폴더에
MenuController 클래스 작성
@Controller
@RequestMapping("/menu")
-----------------> 테스트 수행
뷰 연결작업
index 페이지 생성
templates폴더 하위에
menu/list 페이지 생성하여
뷰 작성