Mybatis 사용법 공부하기

changi123·2024년 8월 11일
0

공부

목록 보기
8/24
post-thumbnail

방향

  • 큰틀인 CRUD를 [mapper], [xml], [repository] 로 나누어서 정리해놓은 블로그가 있다. 보면서 직접 써보고 쪼개서 공부해보자

1. INSERT

  1. mapper
void save(Post post);
  1. XML
<insert id="save" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO post( writer_id, title, content, create_date, modified_date, views)
        values (#{writerId}, #{title}, #{content}, #{createDate}, #{modifiedDate}, #{views})
</insert>
  1. repository
@Override
public Post save(Post post) {
  post.setCreateDate(LocalDateTime.now());
  post.setModifiedDate(LocalDateTime.now());
  postMapper.save(post);
  return post;
}
  • insert 태그 내의 id에는 mapper 인터페이스에서 정의한 메소드 이름과 일치시켜 연결한다.
  • #{}를 사용하여 PreparedStatement의 파라미터를 바인딩한다.
  • useGeneratedKeys : DB에서 키를 자동 증가시킬 때 사용한다.
  • keyProperty : 생성되는 키의 attribute 이름을 지정한다.

2. SELECT

  1. mapper
Optional<Post> findById(Long id);
  1. XML
    <select id="findById" resultType="Post">
        SELECT id, writer_id, title, content, create_date, modified_date, views
        FROM post
        where id = #{id}
    </select>
  1. repository
    @Override
    public Optional<Post> findById(Long id) {
        return postMapper.findById(id);
    }
  • resultType : 반환형을 명시해준다.

3. UPDATE

  1. mapper
void updatePost(@Param("id") Long id, @Param("updateParam") Post updateParam);
  1. XML
    <update id="updatePost">
        UPDATE post
        SET title=#{updateParam.title},
            content=#{updateParam.content},
            modified_date=#{updateParam.modifiedDate}
        WHERE id=#{id}
    </update>
  1. repository
    @Override
    public Post updatePost(Long id, Post updateParam) {
        updateParam.setModifiedDate(LocalDateTime.now());
        postMapper.updatePost(id,updateParam);
        return findById(id).get();
    }

4. DELETE

  1. mapper
void deletePost(Long postId);
  1. XML
    <delete id="deletePost">
        DELETE FROM post
               WHERE id=#{postId}
    </delete>
  1. repository
    @Override
    public void deletePost(Long postId) {
        postMapper.deletePost(postId);
    }

5. 공부 내용

  • 기본 사용법은 구도락 프로젝트에서 했던 문법들이기에 가볍게 봐도 충분할 것 같다. 가장 중요한 동적 쿼리를 공부하자

6. 출처

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보