Java - Mybatis 기본 문법 정리

개미는뚠뚠·2023년 8월 5일
0

java

목록 보기
9/11

회사에서 개발을 하면서 myBatis를 통해 mapper에 전달된 파라미터 값을 편리하게 활용할 수 있었다. 근데 아직까지 내용정리를 못했던 거 같아서 간단하게 정리를 해보려고 한다. 시험기간이라 정신이 없어서 이번에는 문법만 대충 정리하겠다😥


1. 조건문(if, choose, when, otherwise)

  • 단일 조건 <if>
<if test="조건">
    조건이 참이면 해당 쿼리 실행
</if>
<select id="getUserList" parameterType="String" resultType="hashMap">
    SELECT *
    FROM USERTABLE
    WHERE USE_YN = 'Y'
    <if test='userId != null and userId != ""'>
        AND USER_ID = #{userId}
    </if> 
  </select>
  • 다중 조건 <choose>, <when>, <otherwise>
<choose>
    <when test="조건1">
        조건1이 참이면 해당 쿼리 실행
    </when>
    <when test="조건2">
        조건1이 거짓이고, 2가 참이면 해당 쿼리 실행
    </when>
    <otherwise>
        조건 1,2가 전부 거짓이면 해당 쿼리 실행
    </otherwise>
</choose>
<select id="getUserInfo" parameterType="hashMap" resultType="hashMap">
    SELECT *
    FROM BOARD
    WHERE USE_YN = 'Y'
    <choose>
        <when test='"writer".equals(searchType)'>
            AND WRITER = #{searchValue}
        </when>
        <when test='"content".equals(searchType)'>
            AND CONTENT = #{searchValue}
        </when>
        <otherwise>
            AND TITLE = #{searchValue}
        </otherwise>
    </choose>
</select>

2. 반복문(foreach)

<foreach collection="컬렉션 변수" item="항목" index="인덱스" open="시작문자열" close="종료문자열" separator="구분자">
    #{item}
</foreach>
<select id="getUserList" parameterType="hashMap" resultType="hashMap">
    SELECT *
    FROM USERTABLE
    WHERE STUDENT_ID IN
    <foreach collection="params" item="item" open="(" separator="," close=")">
        #{item.userId}
    </foreach>
</select>

3. 다중쿼리(selectKey)

<selectKey keyProperty="propertyName" resultType="string" order="BEFORE">
    SELECT 컬럼명
    FROM 테이블명
    WHERE 조건
</selectKey>
// BEFORE : keyProperty 변수로 지정한 결과값을 #{propertyName} 활용할 수 있다.

<selectKey keyProperty="propertyName" resultType="string" order="AFTER">
    SELECT 컬럼명
    FROM 테이블명
    WHERE 조건
</selectKey>
// AFTER : JAVA단에서 AFTER로 보낸 값을 사용할 수 있으나 변수로 활용 X
<insert id="insertUserInfo" parameterType="hobby">
    <selectKey keyProperty="userid" resultType="string" order="BEFORE">
        SELECT MAX(user_id) + 1 FROM USERTABLE
    </selectKey>
    INSERT INTO USERTABLE(user_id, user_name, user_age)
    VALUES (#{userid}, #{username}, #{userage})
</insert>

이번 글은 아무리 시험기간이라고 하지만 정말 성의가 없다고 나도 느껴진다. 하지만 이 글을 정리하면서 다중쿼리(selectKey)를 활용하여 mapper의 결과값을 도출할 수 있는 또다른 지식을 얻은 거 같다. 찾아보니 where이라는 조건 특화 어쩌구도 있던데 나중에 활용하게 된다면 여기에 다시 한번 정리를 하도록 하겠다.

2개의 댓글

comment-user-thumbnail
2023년 8월 5일

글 재미있게 봤습니다.

1개의 답글