개발
Day 52 - Mapping
·3분 읽기
이 글은 2026년 05월 15일 작성된 글입니다.
오늘은 생성자 파라미터 분석 유틸, 회원 CRUD 및 검색, 그리고 MyBatis resultMap과 association/collection 매핑까지 정리했다.
1. 생성자 파라미터 정보 조회
Parameter[] parameters =
ClsUtil.getParameters(
TestCar.class,
new Object[]{"BMW", 1234}
);생성자의 타입과 이름 정보를 조회할 수 있도록 구현했다.
2. 생성자 파라미터 이름 조회
String[] parameterNames =
ClsUtil.getParameterNames(
TestCar.class,
new Object[]{"BMW", 1234}
);Reflection 기반으로 생성자 파라미터 이름을 추출했다.
3. 타입 기반 생성자 선택
여러 생성자가 있을 때 입력된 타입과 일치하는 생성자를 선택하도록 개선했다.
- String
- int
등 타입 기준 생성자 탐색 가능.
4. 함수 파라미터 타입 조회 개선
특정 함수의 파라미터를 타입 기준으로 조회할 수 있도록 개선했다.
5. 회원 단건 조회
Member member = memberService.findByUsername("user2");username 기반 회원 조회 테스트를 구현했다.
6. 회원 생성
int id = memberService.create(
"user3",
"{noop}1234",
"유저3",
"user3@test.com"
);회원 생성 후 다시 조회해서 저장 여부를 검증했다.
7. 회원 삭제
memberService.deleteById(1);삭제 후 회원 개수를 확인했다.
8. 회원 수정
memberService.update(
1,
"user1_updated",
"{noop}5678",
"유저1 수정",
"user1_updated@test.com"
);회원 정보 수정 기능을 구현했다.
9. 일부 데이터만 수정
memberService.update(
1,
"",
"",
"유저1 수정됨",
""
);빈 값은 유지하고 특정 필드만 수정 가능하도록 처리했다.
10. 회원 검색
memberService.search("username", "user1");검색 기준:
- username
- name
- 전체 검색
11. 다중 회원 삭제
memberService.deleteByIds(Arrays.asList(id3, id4));foreach 기반 다중 삭제 기능을 구현했다.
12. 게시글 작성자 정보 추가
ALTER TABLE post
ADD COLUMN memberId BIGINT UNSIGNED NULL;게시글과 회원을 연결할 수 있도록 memberId를 추가했다.
13. 작성자 이름 포함 조회
Post post = postService.findByIdWithAuthorName(1);JOIN 기반으로 작성자 이름까지 함께 조회했다.
14. 작성자 이름 검색
List<Post> posts =
postService.searchWithAuthorName(
"author",
"유저1"
);작성자 이름 기반 검색 기능을 구현했다.
15. resultMap
<resultMap id="PostWithAuthorMap" type="Post">JOIN 결과를 객체 구조에 맞게 매핑할 수 있다.
16. association
<association property="author"
javaType="Member">association은 1:1 관계 매핑에 사용된다.
예시:
- 게시글 → 작성자
- 회원 → 프로필
17. collection
<collection property="comments"
ofType="Comment">collection은 1:N 관계 매핑에 사용된다.
예시:
- 게시글 → 댓글 목록
- 주문 → 주문 항목 목록
18. association vs collection
| 구분 | association | collection |
|---|---|---|
| 관계 | 1:1 | 1:N |
| 타입 | 단일 객체 | 리스트 |
| 태그 | <association> | <collection> |
✅ 정리
- Reflection 기반으로 생성자 파라미터 정보를 조회하는 기능을 구현할 수 있었다.
- 회원 CRUD와 검색 기능을 구현하면서 서비스 구조를 확장할 수 있었다.
- 게시글과 회원을 연결하여 작성자 개념을 추가할 수 있었다.
- MyBatis resultMap을 사용하면 JOIN 결과를 객체 구조에 맞게 유연하게 매핑할 수 있다.
- association은 1:1 관계, collection은 1:N 관계 매핑에 사용된다.