MyBatis Dynamic SQL

이 라이브러리는 동적 SQL문을 생성하기 위한 프레임워크입니다.
다른 표현으로는, MyBatis3 및 Spring JDBC 템플릿에 대해 지원해주는, typesafe SQL 템플릿 라이브러리입니다.

이 라이브러리는 MyBatis 또는 Spring에서 사용하도록 형식화된 전체 DELETE, INSERT, SELECT 및 UPDATE 문을 생성합니다.
가장 일반적인 사용 사례는 MyBatis에서 바로 사용할 수 있는 SQL 문을 생성하고, 이에 매개 변수 집합을 매칭하는 것입니다.
또한, 이 라이브러리는 Spring JDBC 템플릿과도 호환되는 SQL 명령문 및 매개변수 객체를 생성합니다.

라이브러리는 전체 SQL 문과 해당 SQL 문에 필요한 parameter 를 포함하는 객체를 생성하는, SQL-like DSL 을 구현하여 작동합니다.
SQL 문 object 는 MyBatis의 mapper 메서드에 대한 parameter로 직접 사용할 수 있습니다.

라이브러리는 다음 유형의 SQL 문을 생성합니다.

  • COUNT 문 - Long 값을 반환하는 특수 SELECT 문
  • 유연한 WHERE 절이 있는 DELETE 문
  • 여러 유형의 INSERT 문:
    • Object 파라미터를 통한 단일 행을 삽입하는 명령문
    • SQL 문에 직접 값을 제공하는 단일 행을 삽입하는 명령문
    • 여러 VALUES 절을 사용하여 여러 행을 삽입하는 문
    • JDBC 일괄 처리를 사용하여 여러 행을 삽입하는 문
    • SELECT 문의 결과를 사용하여 테이블에 삽입하는 문
  • 유연한 column 목록, 유연한 WHERE 절 및 고유한 “group by”, joins, unions, “order by” 등을 지원하는 SELECT 문
  • 유연한 WHERE 절과 유연한 SET 절이 있는 UPDATE 문

라이브러리의 주요 목표는 다음과 같습니다.

  1. Typesafe(타입 안정) - 가능한 범위 내에서 라이브러리는 parameter 타입이 데이터베이스 column 타입과 일치하는지 확인합니다.
  2. Expressive(표현) - 문장은 의미를 명확하게 전달하는 방식으로 작성됩니다(영감을 준 Hamcrest에게 감사합니다).
  3. Flexible(유연성) - and, or, 중첩 조건의 조합을 사용하여 where 절을 작성할 수 있습니다.
  4. Extensible(확장성) - 라이브러리는 MyBatis3, Spring JDBC 템플릿 또는 일반 JDBC에 대한 명령문을 렌더링합니다. 다른 프레임워크에 대한 절을 생성하도록 확장할 수도 있습니다. 기본 제공 조건이 사용자의 요구에 충분하지 않은 경우 조건을 쉽게 추가할 수 있는 사용자 지정입니다.
  5. Small - 이 라이브러리를 추가하는 것은 매우 작은 의존성을 하나를 추가하는 것입니다. 전이 종속성이 없습니다.

이 라이브러리는 MyBatis Generator에 의해 생성된 코드를 개선하는 데 사용할 수 있는 유틸리티를 만들고자 하는 바람에서 시작되었지만, 라이브러리는 매우 적은 설정으로 자체적으로 사용할 수 있습니다.