째의 개발 기록방

[MyBatis/MySql] MyBatis 사용법, 서브쿼리 사용법 본문

Back End/SQL

[MyBatis/MySql] MyBatis 사용법, 서브쿼리 사용법

째린이 2022. 5. 10. 18:15

Mybatis란?

Mybatis는 자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping)프레임워크이다.

SQL을 별도의 파일로 분리해서 관리하게 해준다.
Hibernate나 JAP(Java Persistence Api)처럼 새로운 DB프로그래밍 패러다임을 익혀야하는 부담 없이 SQL을 그대로 이용하면서 JDBC코드 작성의 불편함도 제거해주고 도메인 객체나 VO객체를 중심으로 개발이 가능하다는 장점이 있다.

Mybatis의 특징

  1. 쉬운 접근성과 코드의 간결함
    JDBC의 모든 기능을 Mybatis가 대부분 제공한다.
    복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다.
    수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있다.
  2. SQL문과 프로그래밍 코드의 분리
    SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다.
  3. 다양한 프로그래밍 언어로 구현가능
    Java, C#, .NET, Ruby

 

* SQL 코드와 매핑 정의를 가지는 mapper는 크게 XML, 어노테이션으로 설정 할 수 있다. 

<mapper namespace="mybatis.UserMapper">

     - Namespace를 통해 JAVA 클래스와 Annotation클래스와 동기

 

<select id="selectComtList" parameterType="kr.co.homepage.vo.ReportCommentsVO" resultMap="reportComt">
	<include refid="reportCommentsSqlId"></include>
	ORDER BY COMT_ID DESC
 </select>

     - Sql id 설정 및 parameterType, resultType을 설정

 

위와 같이 XML 및 어노테이션으로 SQL mapper를 설정 할 수 있다.

여기서 주의할점은 XML의 Namespace 이다. SQL Mapper는 XML과 어노테이션을 병행해서 사용할 수 있다. XML에서 namespace를 통해 경로(패키지)의 Class를 연결해 주면 두가지 설정 정보 가 동기화 된다. 이떄 주의할점은 각 id가 중복되면 안된다는 점이다.

 

 

서브쿼리란?

-> 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문이다.

-> 메인쿼리와 종속적 관계를 가진다.

-> 괄호로 감싸 사용한다.

 

서브쿼리 작성이 가능한 곳

  • SELECT, FROM, WHERE, HAVING, ORDER BY
  • INSERT문의 경우 - VALUES
  • UPDATE문의 경우 - SET

서브쿼리의 특징

1. 서브쿼리는 쿼리를 구조화시키므로, 쿼리의 각 부분을 명확히 구분할 수 있게 해준다.

2. 서브쿼리는 복잡한 JOIN이나 UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공한다.

3. 서브쿼리는 복잡한 JOIN이나 UNION 보다 좀 더 읽기 편하다.

 

 

 

출처:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=songintae92&logNo=221216410360, http://www.tcpschool.com/mysql/mysql_multipleTable_subquery