Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 터미널
- zsh theme
- 인프런
- 맥
- 인프런워밍업클럽
- Pager
- mysql 표 출력
- oh-my-zsh
- table status
- VI
- 티스토리챌린지
- 동적 프로그래밍 방법
- zsh
- MySQL
- CS스터디
- 오블완
- 스터디2기
- 욕심쟁이 방법
- 오일러 경로
- 알고리즘
- 네트워킹데이
- mycli
- Less
- 분할정복 방법
- 순차탐색
- mysql 표
- cs
- 데이크스트라
- spring boot
- 이진탐색
Archives
- Today
- Total
Develop
30일차_Spring-MyBatis 실습 정리: 테스트 코드, 매핑, 회원가입 구현 본문
안녕하세요 .ᐟ
4/14(월) 데브코스 30일차(7주 1일차) 입니다.
오늘은 스프링에서 테스트 케이스를 작성해서 테스트도 해보고, 마이바티스 매핑에 대해서 학습했습니다.
테스트 케이스 작성
테스트 클래스 자동 생성
- JUnit5와 Spring Boot Test를 활용해 테스트 클래스를 자동으로 생성
- 윈도우 : Ctrl + Shift + T
- 맥 : Command + N
스프링과 JUnit5 통합
@ExtendWith(SpringExtension.class)
- JUnit5 테스트 클래스에 스프링 컨텍스트를 로딩함
- 이 설정을 통해 스프링 빈을 사용할 수 있게 됨
설정 파일 명시
@ContextConfiguration(...)
- 명시적으로 설정 파일을 지정할 수 있음
- 테스트 환경에 따라 필요한 설정 파일만 로드할 수 있다는 장점이 있음
테스트 메서드 작성 규칙
@Test
- public void 형태로 작성
스프링 빈 로딩 확인
- 테스트 실행 시 출력되는 로그를 통해 확인
- 이를 통해 빈 설정이나 의존성 주입이 제대로 이루어졌는지 점검 가능
MyBatis 매핑
매핑 규칙
- Mapper XML 또는 @Mapper 인터페이스 사용 시 SQL 쿼리의 id는 Java 메서드명과 일치해야 함
- 예시 : id=findById와 findById()를 `bkIdx`로 일치시킴
- java
// BookRepository.java
Book findById(int bkIdx);
- xml
<!-- bookMapper.xml -->
<select id="findById" resultType="Book">
SELECT * FROM book WHERE bk_idx = #{bkIdx}
</select>
인터페이스 메서드에 매개변수가 하나일 때
- #{}를 사용하여 매개변수를 바인딩
- 예시:
@Select("select * from book where bk_idx = #{bkIdx}")
복잡한 쿼리 관리
XML 분리
- 복잡한 쿼리는 resources의 XML 파일로 분리하여 관리함
- 결과 매핑 처리 태그
- 1대다 관계 : <collection>
- 1대1 관계 : <association>
동적 쿼리
동적 쿼리 태그
- if, choose-when, where, trim, foreach : XML에서 활용하여 조건부 쿼리 작성
- where : 조건이 없을 경우 자동으로 제거되어 쿼리 오류 방지
조건부 쿼리 및 반복문 처리
- foreach : 리스트 형태의 데이터를 반복적으로 처리
- insert, update 등 : bulk 작업 시 유용하게 사용
Like 문 작성
- concat 함수를 사용하여 동적 like 문 작성
- Like 문 : 사용자가 입력한 값에 따라 SQL 이 동적으로 바뀌어야 할 때 사용
- % : 위치에 따라 문자열로 시작/끝나는 값을 찾거나, 포함하는 값을 찾을 때 사용
- Like 문 : 사용자가 입력한 값에 따라 SQL 이 동적으로 바뀌어야 할 때 사용
| LIKE '자바' | 정확히 “자바”만 찾음 |
| LIKE '%자바' | “자바”로 끝나는 값 (예: “초급 자바”) |
| LIKE '자바%' | “자바”로 시작하는 값 (예: “자바 기초”) |
| LIKE '%자바%' | “자바”가 포함된 값 (예: “자바의 정석”, “초급 자바 가이드”) |
- concat 함수 : 문자열을 이어붙여줌 (% + 검색어 + %)
- 예시:
@Select("select * from book where title like concat('%', #{title}, '%')")
MemberService - 회원가입 아이디 중복 체크
중복 체크 구현
- Controller
- 폼 입력값에 대해 유효성 검증을 수행 (@NotBlank, @Size, @Email 등) 하고,
- DTO로 변환한 데이터를 서비스로 전달함
- BindingResult를 통해 검증 실패 시 폼으로 돌아가고, 성공 시 회원가입 로직을 진행함
- Service
- 회원가입 시 아이디의 중복 여부를 서비스 단에서 검증
- @Transactional을 통해 트랜잭션을 관리
- MemberRepository.existsMember()를 호출하여 중복 여부를 확인함
- 중복일 경우 : CommonException으로 예외 처리
- 중복이 아닐 경우 : insertInfo() 메서드를 통해 회원 정보를 저장
오늘도 수고하셨습니다~
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 32일차_Spring-security 인증/인가 실습 (0) | 2025.04.17 |
|---|---|
| 31일차_ Spring-MyBatis 실습정리 : 회원가입, 로그인, CORS, 파일처리, Mock 테스트, 보안 설정 (0) | 2025.04.16 |
| 29일차_Spring-MyBatis 초기 설정 (0) | 2025.04.12 |
| 28일차_Spring MVC(동작원리, 처리흐름), Logback, Lombok (0) | 2025.04.11 |
| 27일차_Spring-core(Scope, Bean, DI, AOP), Spring-mvc(Context) (0) | 2025.04.09 |