이 글은 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
  • email
  • 전체 검색

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

구분associationcollection
관계1:11:N
타입단일 객체리스트
태그<association><collection>

✅ 정리

  • Reflection 기반으로 생성자 파라미터 정보를 조회하는 기능을 구현할 수 있었다.
  • 회원 CRUD와 검색 기능을 구현하면서 서비스 구조를 확장할 수 있었다.
  • 게시글과 회원을 연결하여 작성자 개념을 추가할 수 있었다.
  • MyBatis resultMap을 사용하면 JOIN 결과를 객체 구조에 맞게 유연하게 매핑할 수 있다.
  • association은 1:1 관계, collection은 1:N 관계 매핑에 사용된다.

0개의 댓글