Just do IT
article thumbnail
Published 2022. 12. 5. 10:48
Mybatis 문법 Programing/DB

Mybatis 문법


1. <select>, <insert>, <update>, <delete>

<select id="queryId" parameterType="parameter" resultType="result">
</select>

   - select : 쿼리에 맞게 select, insert, update, delete를 사용할 수 있다

   - id : 쿼리를 불러오기 위한 쿼리명이라고 보면 된다

(최대한 쿼리의 목적에 적합하게 명명하기 - 회원리스트(SelectUserList))

   - parameterType : 쿼리의 where 조건에 들어갈 변수의 타입을 기록하면 된다

      (모델일 경우 모델의 경로를, java 타입일 경우 타입을 기록하면 된다)

   - resultType : 쿼리의 결과를 담을 타입의 경로

      (모델일 경우 모델의 경로를, list일 경우 java.util.list)

   * insert, update, delete는 resultType이 int로 반환된다.

    insert, update, delete는 데이터가 변경된 갯수가 반환되거나 혹은 1, 0로 성공, 실패 여부를

확인할 수 있다 

 

2. <if>문

<if test="P_COMPANY_CD != null and !P_COMPANY_CD.equals('')"></if>

   - if로 감싼 쿼리문은 if의 조건이 참일 때만 실행이 된다.  

   - 주로 파라미터가 null인지 체크할 때 사용된다
   - test 안에 필요한 조건을 입력한다.


1. null값 체크 시 != null을 먼저 체크하면 좋다
 (mybatis 뿐만 아니라 어떤 상황이라도 !=null을 먼저 체크하는게 효율적이다)

 > 스캔한 빈 상자를 확인하는 방법이라고 생각하면 된다
       != null 은 스캔 후 빈 상자를 열지 않고 분류하는 방법이고
      .equals('')는 스캔 후 빈 상자를 열어서 확인 후에 분류하는 방법이다.
   * 빈 상자라는게 확인이 되면 굳이 상자를 열어볼 필요가 없지 않은가?
      그렇기 때문에 !=null을 먼저 체크를 해주면 좀 더 효율적인 소스가 될 수 있다.
 

2. where 조건 오류

두 가지 오류를 볼 수 있다.

   ① if절이 모두 false여서 where 뒤에 조건이 없어서 생기는 오류

      < 2 가지 해결방법 > 

      - where 1 = 1 뒤에 <if> and ~ </if> 와 같이 작성한다 -> 조건이 없을 경우 전체 출력이 된다

      - <where>           
          <if test="id != null">AND id = #{id} </if>           
          <if test="subject != null">AND subject = #{subject} </if>           
        </where>

        where 대신 if절을 <where>로 감싸면 자동으로 첫번째 조건의 and를 where로 변경해서 출력해준다

   ② test 조건 오류

      < 에러 > NumberFormatException

      < 해결방법 >

      - test안에 조건을 입력할 때 test = "test.equals(' ')" 와 같이 "와 '에 주의를 기울여야 한다.

        보통은 전체 조건을 " "로 감싸고 그 안에 각 조건에 값을 ' '로 감싸준다


3. <foreach>문

COMPANY_CD IN
<foreach collection="P_COMPANY_CD" index="index" item="item" open="(" separator="," close=")">
    #{item}
</foreach>

   - 다중 파라미터를 넣어야 하는 COMPANY_CD IN (A, B)와 같은 경우 사용할 수 있다

   - foreach : list 형식의 파라미터를 하나씩 꺼내서 나열해주는 함수이다

   - collection : list 형식의 파라미터명

   - index : 인덱스

   - item : list에서 꺼낼 값의 변수 명

   - open : 나열의 시작 점

   - separator : 값을 분리해주는 문자 (콤마(,)를 써주는 편이 좋다)

   - close : 나열의 마무리

※ 위 foreach문을 복사해서 collection의 파라미터명만 변경해서 사용하면 편할 것이다.

※ IN 은 LIKE와 비슷하지만 많은 값을 한번에 조회함으로 더 많은 결과를 불러올 수 있다.

   -> 그만큼 시간은 소요됨

     COMPANY_CD LIKE '%A%' > 회사코드에 A가 있는 회사 모두

     COMPANY_CD IN (A, B) > 회사코드가 A와 B인 회사 모두

 

'Programing > DB' 카테고리의 다른 글

SQL - CASE WHEN  (0) 2022.12.20
SQL 문법을 알아보자  (0) 2022.12.02
DBeaver auto-commit 설정 해제하기  (0) 2022.12.02
다중 테이블에서 데이터를 한번 출력하는 방법  (0) 2022.11.30
쿼리 - null 체크하기  (0) 2022.11.30
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!