Database
[MyBatis] CRUD 기능 구현
최MAX
2023. 2. 27. 23:24
MyBatis를 이용해 간단한 CRUD 기능을 구현해보자!
MemberRepository
@Mapper
public interface MemberRepository {
MemberResponseDto findById(Long id);
MemberResponseDto findByUsername(String username);
void update(MemberRequestDto dto);
void deleteById(Long id);
void deleteAll();
List<MemberResponseDto> findAll();
}
- findById: 멤버의 Id로 조회하기
- findByUsername: 멤버의 이름으로 조회하기
- update: MemberRequestDto를 받아 멤버 정보 수정
- deleteById: 해당 Id의 멤버를 삭제하기
- deleteAll: 테이블의 전체 멤버 삭제하기
- findAll(): 테이블의 전체 멤버 조회하기
Member.xml
<mapper namespace="example.mybatis.repository.MemberRepository">
// code
</mapper>
namespace에 Member.xml이 쓰이는 경로를 지정
findById
<select id="findById" parameterType="long" resultType="example.mybatis.dto.MemberResponseDto">
select * from member where id = #{id};
</select>
- select id="findById"
- MemberRepository 내 메소드 findById()에서 위의 코드를 사용한다.
- parameterType="long", resultType="example.mybatis.dto.MemberResponseDto"
- MemberResponseDto findById(Long id);
- 매개 변수 타입은 Long이고, 반환 타입은 직접 작성한 MemberResponseDto이기 때문에 알맞은 값 설정
- select * from member where id = #{id}
- 해당 id를 가진 멤버의 모든 정보를 조회한다.
findById()를 xml 파일 작성 없이 어노테이션으로 해결하고 싶다면 MemberRepository에서 아래와 같이 수정하면 된다.
@Select("select * from member where id = #{id}")
MemberResponseDto findById(Long id);
위와 같은 원리로 나머지 기능도 쉽게 구현할 수 있다.
findByUsername
<select id="findByUsername" parameterType="String" resultType="example.mybatis.dto.MemberResponseDto">
select * from member where username = #{username};
</select>
이것도 간단하게 어노테이션으로 해결한다면 MemberRepository에서 수정 가능하다.
@Select("select * from member where username = #{username}")
MemberResponseDto findByUsername(String username);
findAll
<select id="findAll" resultType="example.mybatis.dto.MemberResponseDto">
select *
from member
order by id DESC
</select>
- order by id DESC
- id 내림차순으로 멤버 전체 조회 결과를 반환
어노테이션 기반으로 수정한다면
@Select("select * from member order by id DESC")
List<MemberResponseDto> findAll();
update
<update id="update" parameterType="example.mybatis.dto.MemberRequestDto">
update member
set username = #{username},
age = #{age},
address = #{address}
where
id = #{id}
</update>
어노테이션 사용 시 MemberRepository
@Update("update member set username=#{username}, age=#{age}, address=#{address} where id=#{id}")
void update(MemberRequestDto dto);
deleteById, deleteAll
<delete id="deleteById" parameterType="long">
delete from member where id = #{id}
</delete>
<delete id="deleteAll">
delete from member
</delete>
어노테이션 사용 시 MemberRepository
@Delete("delete from member where id=#{id}")
void deleteById(Long id);
@Delete("delete from member")
void deleteAll2();
이처럼 생각보다 간단하게 사용할 수 있다.
다음엔 좀 더 심화된 기능을 구현해봐야겠다.