Mybatis 프레임워크 == JDBC 프레임워크
JDBC : java DB 연결
config.properties 설정들을 DBConfig 로 얻어와 HikariCP, Mybatis 설정해줌
서버 켰을 때 메인페이지
메인페이지 요청 / 최상단 요청 받았을 때 어떤 페이지로 이동해달라
메인페이지 요청하자마자 DB 갔다와야해서 바로 보여주는 게 아니고 controller 갔다 메인페이지 보여줄거임
main page에 To do List 쭉 보여줄거임
MainController
@Slf4j // 로그 객체 자동 생성
@Controller // 요청/응답 제어 역할 명시 + Bean 등록
public class MainController {
@RequestMapping("/") // 최상위 요청 들어왔을 때
public String mainPage() {
// 메인페이지로 forward 시켜줄거임
return "common/main";
// classpath:/templates/
// common/main
// .html
// -> 이쪽으로 forward 시켜주겠다.
}
}
main.html
메인페이지에서 DB에서 받은 To do List 전부 보여줄 거라서 thymeleaf 사용할거임
html 태그에 xmlns:th="http://www.thymeleaf.org" 구문 추가
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
인터페이스 상속 받아서 사용할 ServiceImpl 클래스도 생성(실제 서비스 비즈니스 로직 수행할 클래스)
TodoServiceImpl
@Service
public class TodoServiceImpl implements TodoService {
}
@Service 어노테이션 Impl 에 작성해줘야함
(interface 는 객체가 될 수 없음)
비즈니스 로직(데이터 가공, 트랜잭션 처리) 역할 명시 + Bean 으로 등록
MainController
@Autowired
private TodoService service;
MainController 에서 TodoService 를 부를 때 Spring이 관리하고 있는 Bean 중에 TodoService 랑 타입이 같거나 상속 관계인 Bean 을 주입 시켜달라는 어노테이션 @Autowired 작성
=> 의존성 주입 DI (객체가 만들어져서 들어온 것)
log.debug("service : " + service);
service : com.home.todo.model.service.TodoServiceImpl@5fbc2c58
-> 주소값 찍힘 service 객체 만들어진거임
이전에는 사용자가 직접 객체화해서 사용
private TodoService service = new TodoService();
DAO 에서 DB 왔다갔다 하던 걸 대신할 클래스
TodoMapper 인터페이스 @Mapper 어노테이션 작성
@Mapper
public interface TodoMapper {
}
@Mapper
@Mapper mapper.xml 과 연결될 준비가 됐다는 어노테이션
mapper.xml 파일에 namespace 가 Mapper 와 연결되는 걸 찾으면 연결해줌
mapper.xml 파일에 작성한 SQL 을 Mapper 가 말하는대로 수행 호출 결과 반환 해줌
interface 는 객체화될 수 없음 @Mapper 작성하면 TodoMapper 가 객체가 되는 게 아님
Mybatis 에서 제공하는 눈에서 확인되지 않는 TodoMapper 를 상속 받은 객체가 있음
걔가 Bean 으로 등록되는 거
TodoServiceImpl 에서 Mapper 객체 생성
@Service // 비즈니스 로직(데이터 가공, 트랜잭션 처리) 역할 명시 + Bean 으로 등록
public class TodoServiceImpl implements TodoService {
@Autowired
private TodoMapper mapper;
}
TodoMapper 인터페이스는 src/main/resources/mappers/todo-mapper.xml 과 연결해서 사용할 거임
Interface 패키지명.인터페이스명 작성해서 연결해줌
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.home.todo.model.mapper.TodoMapper">
</mapper>