Apache project 팀에서 google code 팀으로 이동하면서 명칭이 변경.
01. MyBatis란?
[MyBatis 설명]
- 개발자가 지정한 SQL, 저장프로시저(쿼리의 집합) 그리고 몇가지 고급 맵핑을 지원하는 퍼시스턴스 프레임워크이다. MyBatis는 JDBC(Java DataBase Connectivity)로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 맵핑을 대신해준다. MyBatis는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO를 맵핑하기 위해 XML과 애노테이션(참조링크 참조)을 사용할 수 있다.
[MyBatis 특징]
- 간단하다
- 생산성 : 코드의 양이 줄고 설정이 간단하다.
- 성능 : 데이터 접근 속도를 높여주는 Join 맵핑을 한다는 구조적 강점이 있다. 데이터를 가져오는 방식이 다양하여 다양한 전략을 세울 수 있다.
- 유지보수성
- SQL문이 소스 코드로부터 완전 분리
iBatis / MyBatis 차이점
- Java 요구버전 iBatis에서는 JDK 1.4 이상 → MyBatis에서는 JDK 1.5 이상 사용 가능.
- 패키지 내부 구조가 변경 com.ibatis.* → org.apache.ibatis.*
- sqlMap.xml 내부 구조가 변경되었음.
- parameterMap 사용불가 → parameterType으로 대체
- dtd가 변경 (“http://mybatis.org/dtd/mybatis-3-mapper.dtd”)
- 사용 용어 변경 : SqlMapConfig → Configration / sqlMap → Mapper / resultClass → resultType
- MyBatis lib 별도 제공
- Annotation 도입 : sqlMapClient DI 설정 불필요, 간편해짐, Bean id sqlSession Template만 지정하면 됨.
- rowHandler 대체
- xml및 대량 데이터 처리를 위해 사용되었던 rowHandler가 삭제
- rowHandler → resultHandler로 변경됨
- 자바 annotation을 사용하여 xml을 사용하지 않고 자바로만 할 수 있게 됨.
- 자바 선언 보다 xml 선언이 우선순위릘 가짐.
- 네임스페이스 방식 변경 : 네임스페이스 사용 필수, userStatementNameSpace 설정 제거
- 동적 SQL - XML 엘리먼트 : if, choose(when, otherwise), trim (whre, set), foreach
- 동적 SQL - Provider annotation
- 캐시지원
- (스프링 연동모듈) mapper 자동 검색
[변경된 속성 종합]
iBatis | MyBatis | 비고 |
---|---|---|
com.ibatis.* | org.apache.ibatis. | 패키지 구조 변경 |
SqlMapConfig | Configration | 용어변경 |
sqlMap | mapper | 용어변경 |
sqlMapClient | sqlSession | 구문대체 |
rowHandler | resultHandler | 구문대체 |
resultHandler | SqlSessionFactory | 구문대체 |
parameterMap, parameterClass | parameterType | 속성통합 |
resultClass | resultType | 용어변경 |
#var# | #{var} | 구문대체 |
$var$ | ${var} | 구문대체 |
구문대체 |
전환 툴
전환 팁
- isEqual -> if 변경
- before :
<isEqual prepend="AND" property="searchCondition" compareValue="1"></isEqual>
- after :
<if test="searchCondition== '1'">AND</if>
#iBatis
<isNotEmpty prepend="AND" property="searchWord">
<![CDATA[ a.INQIRE_INFO LIKE '%' || #searchWord# || '%' ]]>
</isNotEmpty>
#MyBatis
<if test="searchWord != null and searchWord != ''">
<![CDATA[ AND a.INQIRE_INFO LIKE '%' || #{searchWord} || '%' ]]>
</if>
- resultMap vs resultType : https://okky.kr/article/282645
- (parameter/result)Class → (parameter/result) Type → mapper-config 내에 있는 것을 제외하고 정확한 주소를 적어주어야함
- sqlMap → mapper
- #code# → #{code}
- resultMap
class → type
'BackEnd > Spring' 카테고리의 다른 글
Spring jstl 추가하기 (1) | 2019.03.09 |
---|---|
Spring Controller 메소드 리턴타입 정리 (1) | 2019.03.08 |
VS code에서 Spring 시작하기 (0) | 2019.03.02 |
제어의 역전 (IoC) (0) | 2019.01.28 |
STS 설치하기 (0) | 2019.01.27 |