본문 바로가기
programming/web

[spring]동적 SQL

by 힐무새 2017. 6. 13.

XML에서 동적 SQL 처리

  • OGNL(Object Graph Navigation Language)
    • ex) <c:if ...  ,   <c:forEeach ...
    • 프로퍼티의 값을 가져오거나 설정하기 위한 언어..
    • 웹워크, JSTL 등에서 활용, mybatis
  • mybatis가 제공하는 xml element
    • if : 조건 처리
    • choose( when, otherwise) : 조건 그외 처리..

if 엘리먼트

  • 모든 조건에 대해 처리하고 만족하는 조건의 결과를 모두 적용합니다

  • 동적 query : 위와 같이 sql 구문이 조건에 따라서 변경되는 것을 말한다.
  • 여러 논리 조건
    <if test = "user != null and sal != 0">


choose(when, otherwise)

  • 조건 지정과 그 외에 대한 처리를 동적인 sql에서 진행할 때 활용한다

trim(where) 엘리먼트

  • if 엘리먼트가 조건 처리에서 where 구문에 대한 처리를 보완하기 위해 사용한다. (WHERE 1=1)
    prefix : 처리 후 엘리먼트의 내용이 있으면 앞에 붙여줌
    prefixOverrides: 처리 후 앞에 해당 문자가 있으면 자동으로 지움

foreach 엘리먼트

  • 동적 sql을 loop 문으로 반복처리 해야 할 경우
    • 조회 조건에서 부서를 여러 개 검색조건으로 처리할 때

  • 속성
    • collection : 배열의 목록 리스트를 가져옮 ex) jstl의 items
    • item : 배열의 목록 단위  ex) jstl의 var
    • index : 몇번째 값인지 나타내는 index, 0
    • open : 목록에 값을 가져와 설정할 때, 앞에 붙여 주는 문자
      ex) deptno in (
    • close : 목록에 값을 가져와 설정한 후, 마지막에 붙여주는 문자.
      ex) deptno in ( .... ) 
    • separator : 목록에 값을 가져와 설정할 때 값들 사이에 붙여주는 문자열 (delimiter)
      ex) deptno in (10, 20, 30, 40);

다중 선택 처리..

  • 화면
    • 검색할 부서 []10  []20  []30

  • DTO, VO
    private String[] deptnos;
    setDeptnos(String[]), getDeptno()
  • forEach를 활용한 동적 sql


'programming > web' 카테고리의 다른 글

[spring]첨부파일 등록  (0) 2017.06.22
[spring]mybatis 연결  (0) 2017.06.08
[spring]autowire, qualifier  (0) 2017.06.08
[spring]ViewResolver  (0) 2017.06.07
[spring]ModelAndView, redirect, forward, session  (0) 2017.06.07