베나코드
걷고 나니 길
베나코드
전체 방문자
오늘
어제
  • 분류 전체보기 (24)
    • MicroOffice (2)
      • Excel (2)
      • PowerPoint (0)
    • Programming (9)
      • Java (5)
      • SpringFramework (0)
      • 자바스크립트 (3)
      • TypeScript (0)
      • Node.js (0)
      • Mybatis (1)
      • Vue (0)
    • Test (0)
      • Junit (0)
      • Mockito (0)
    • IT용어 (2)
      • 개발론 (0)
      • 디자인 (0)
      • 다양한 (2)
    • Data Structure (2)
    • Algorithm (0)
      • LeetCode (0)
      • Backjoon (0)
      • programmers (0)
      • 시험문제 (0)
    • Regular Expression (0)
    • Azure (0)
    • DB(DATABASE) (1)
      • ERD (0)
      • Oracle DB (1)
      • MySQL (0)
    • Tiny Bug (0)
    • 영어공부 (7)
      • TOEIC (7)
    • Git (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • @AfterAll
  • az-900
  • unchaged
  • TOEIC
  • 오류출력변경
  • excel
  • copyProperties
  • splide
  • Azure기본사항
  • azure
  • 방어코딩
  • @BeforeAll
  • @DisplayName
  • 사용
  • JRM
  • Tippy
  • 방어적프로그래밍
  • js
  • santa
  • 빈문자열
  • 함수
  • java
  • Microsoft Lean
  • beanutils
  • @ParameterizedTest
  • junit5
  • ms
  • FUNCITON
  • @Nested
  • 개발속도

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
베나코드

걷고 나니 길

[Mybatis]<sql>,<include>,<property> 태그 사용
Programming/Mybatis

[Mybatis]<sql>,<include>,<property> 태그 사용

2022. 8. 9. 23:48

➖.  <sql></sql>

        : 반복적으로 쓰이는 sql문의 재사용성을 높여준다.

          <sql id="sql_where">WHERE 1=1</sql>처럼 반복 사용하는 SQL을 동적으로 활용할 때 쓰일 수 있다.

          아래 예시에서는 <sql> 태그 안에 ORACL WITH절을 사용하였다.

<sql id="sql_dept">
    WITH DEPT(
        SELECT 
              DEPT_CODE,
              DEPT_NAME, 
              DEPT_LEVEL 
        FROM DEPARTMENT
    )
</sql>

 

➖. <include></include>

       : <select>,<update> 등에 <sql> 구문을 넣을 때 사용한다. 

         <include>의 refid 값은 <spl> 태그의 id값과 같게 해야 include할 수 있다.

<select id="selectUserByDepartment" parameterType="java.lang.String" resultType="UserInformaiton">
    <include refid="sql_dept"></include>
    SELECT 
        UI.USER_ID,
        UI.USER_NAME,
        UI.USER_DEPARTMENT,
        DEPT.DEPT_NAME,
        DEPT.DEPT_LEVLEL
    FROM USER_INFORMATION UI
    INNER JOIN DEPT ON UI.USER_DEPARTMENT = DEPT.DEPT_CODE
 WHERE UI.USER_DEPARTMENT = #{value}
</select>

 

➖. <property></property>

        : <sql> 구문 내 변수를 전달할 때 사용한다.

          <property>의 name은 <sql> 내에서 사용할 이름이며, value는 <sql>에 전달할 값이다.

          주의할 점은 <property>로 값을 전달하기 때문에, <sql> 내에서 #{name}이 아닌 ${name}으로 전달해야 한다.

<sql id="sql_dept">
    WITH DEPT(
        SELECT 
              DEPT_CODE,
              DEPT_NAME, 
              DEPT_LEVEL 
        FROM DEPARTMENT
        WHERE DEPT_CODE = ${deptCode}
    )
<sql>

<select id="selecMarketingtUser" resultType="UserInformaiton">
    <include refid="sql_dept">
        <property name="deptCode" value="MARKETING"/>
    </include>
    SELECT 
        UI.USER_ID,
        UI.USER_NAME,
        UI.USER_DEPARTMENT,
        DEPT.DEPT_NAME,
        DEPT.DEPT_LEVLEL
    FROM USER_INFORMATION UI
    INNER JOIN DEPT ON UI.USER_DEPARTMENT = DEPT.DEPT_CODE
</select>

 

        만약, parameter 값을 <include> 내 <property>를 통해서 <sql>에 넘기고 싶다면 

        아래 예시와 같이 <property>에서 value="#{name}"으로 넘길 수 있다.

<sql id="sql_dept">
    WITH DEPT(
        SELECT 
              DEPT_CODE,
              DEPT_NAME, 
              DEPT_LEVEL 
        FROM DEPARTMENT
        WHERE DEPT_CODE = ${deptCode}
    )
<sql>

<select id="selectUserByDepartment" parameterType="java.lang.String" resultType="UserInformaiton">
    <include refid="sql_dept">
        <property name="deptCode" value="#{value}"/>
    </include>
    SELECT 
        UI.USER_ID,
        UI.USER_NAME,
        UI.USER_DEPARTMENT,
        DEPT.DEPT_NAME,
        DEPT.DEPT_LEVLEL
    FROM USER_INFORMATION UI
    INNER JOIN DEPT ON UI.USER_DEPARTMENT = DEPT.DEPT_CODE
</select>

 

    베나코드
    베나코드

    티스토리툴바