Spring Boot To do List_01 클래스 연결

송지윤·2024년 4월 11일

Spring Boot

목록 보기
17/70

Mybatis 프레임워크 == JDBC 프레임워크
JDBC : java DB 연결

DB 연결하기 위한 세팅

config.properties 설정들을 DBConfig 로 얻어와 HikariCP, Mybatis 설정해줌

DBeaver 테이블 생성 + 샘플 데이터

서버 켰을 때 메인페이지

메인페이지 요청 / 최상단 요청 받았을 때 어떤 페이지로 이동해달라
메인페이지 요청하자마자 DB 갔다와야해서 바로 보여주는 게 아니고 controller 갔다 메인페이지 보여줄거임
main page에 To do List 쭉 보여줄거임

Main page로 forward 시켜주는 Controller 생성

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">

Service Interface 생성

인터페이스 상속 받아서 사용할 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();

Mapper Interface 생성

DAO 에서 DB 왔다갔다 하던 걸 대신할 클래스

Service 와 Mapper 연결

TodoMapper 인터페이스 @Mapper 어노테이션 작성

@Mapper
public interface TodoMapper {

}

@Mapper

  • Mybatis 에서 제공하는 어노테이션
  • 해당 어노테이션이 작성된 인터페이스는 namespace 에 해당 인터페이스가 작성된 mapper.xml 파일과 연결되어 SQL 호출/수행/결과 반환 가능
  • Mybatis 에서 제공하는 Mapper 상속 객체가 Bean 으로 등록됨

@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 과 연결해서 사용할 거임

Mapper Interface - mapper.xml 연결

Mapper 인터페이스 경로 작성(필수)

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>

0개의 댓글