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