Spring Boot + Thymeleaf 및 MyBatis Interface Mapper 적용

박지명·2026년 5월 6일

스프링부트

목록 보기
2/10

1. Thymeleaf (타임리프) 개요 및 특징

  • 자바 템플릿 엔진: 서버 측에서 동적으로 HTML을 생성하는 SSR(Server-Side Rendering) 기술

  • JSP 대체: 스프링 부트에서 기본으로 권장하며, JSP와 달리 특정 웹 서버(Tomcat)에 종속적이지 않음

  • DevTools 연동: Spring Boot DevTools 의존성 추가 시 뷰 파일 수정 후 자동 새로고침(Live Reload) 지원

2. MyBatis Interface Mapper 방식 설정 (AddressMapper.java)

기존의 DAO 클래스와 SqlSessionTemplate을 직접 작성하지 않고, @Mapper 인터페이스와 XML 매퍼를 직결하여 사용

  • 동작 규칙 (필수 준수 사항)

    • 인터페이스의 패키지 경로와 XML 파일의 리소스 폴더 구조 일치

    • 인터페이스명과 XML 파일명 일치

    • XML의 namespace에 인터페이스의 전체 경로(Full Path) 명시 (예: namespace="com.test.java.mapper.AddressMapper")

3. 타임리프 핵심 표현식 (m1.html, m2.html)

th: 접두어를 사용하며 99% 이상 HTML 태그의 속성(Attribute) 형태로 사용됨

  • 변수 표현식 (${...})

    • 컨트롤러에서 Model로 전달된 데이터(단일값, DTO, Map 등)를 뷰에 출력 (기존 EL 역할)

    • 예: <div th:text="${dto.name}"></div>

  • 선택 변수 표현식 (*{...})

    • 부모 태그에 th:object="${객체}"를 지정하고, 자식 태그에서는 객체명 없이 프로퍼티명만으로 간결하게 접근

    • 예:

      	<ul th:object="${dto}"> 
      		<li th:text="*{name}"></li> 
       	</ul>

4. 연산자와 특수 문법 (m3.html)

  • 기본 연산자: 자바 및 EL과 동일한 산술, 비교(gt, < 등), 논리(and, or), 삼항 연산자 지원

  • 리터럴 치환 문법 (|...|)

    • 지저분한 문자열 결합(+) 기호 없이, 변수 표현식과 일반 텍스트를 직관적으로 혼합하여 출력

    • 예: <div th:text="|${a} + ${b} = ${a + b}|"></div>

  • 엘비스 연산자 (?:)

    • 변수가 null이거나 거짓(falsy)일 경우 대체할 기본값을 지정하는 축약형 삼항 연산자

    • 예: <div th:text="${name} ?: '익명'"></div>

5. HTML 동적 속성 제어 (m4.html)

기존 HTML 태그가 가진 대부분의 속성 앞에 th:를 붙여 서버 데이터를 기반으로 동적 제어

  • th:value, th:style: input 값이나 CSS 스타일을 동적으로 주입

  • th:checked, th:selected: 조건식(Boolean)의 결과에 따라 체크박스 활성화나 셀렉트 박스의 옵션 자동 선택 여부 결정

    • 예: <input type="checkbox" th:checked="${count > 0}">

0개의 댓글