본문 바로가기

Data/MyBatis

(6)
마이바티스 간단하게 알아보기 - 4 (동적 쿼리) # MyBatis - Dynamic ## features 1. if 2. choose (when, otherwise) 3. trim (where, set) 4. foreach ## if SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} ## choose, when, foreach SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} AND featured = 1 ## trim, where, set - trim은 쓸 일이 없을 것 같다 SELECT ..
마이바티스 간단하게 알아보기 - 3 (XML) # MyBatis - XML ## elements 1. cache - 해당 네임스페이스 설정 2. cache-ref - 다른 네임스페이스 설정 참조 3. resultMap - DB Data를 Object에 로드하는 방법 정의 4. sql - SQL 재사용 5. insert 6. update 7. delete 8. select ## select SELECT * FROM PERSON WHERE ID = #{id} ### parameter #{PreparedStatement} - JDBC 사용하면 PreparedStatement에는 "?" 형태로 파라미터 전달 ## insert, update, delete - id: PK - useGeneratedKeys, keyProperty: Id 자동 생성 insert ..
마이바티스 간단하게 알아보기 - 2 (설정) # MyBatis - Setup ## Mapper Setting ### structure - configuration - properties - settings - typeAliases - typeHandlers - objectFactory - plugins - environments - environment - transactionManager - dataSource - databaseIdProvider - mappers ### properties - in Java properties - in properties element ### settings - Alias - 대소문자 구분하지 않음 - Mappers - SQL 구문이 있는 곳을 지정
마이바티스 간단하게 알아보기 - 1 (소개) ## Introduce - Database's SQL, Procedure, Advanced Mapping features to Java POJO - Use XML or Annotation for mapping ## DI Framework for MyBatis - MyBatis-Spring - MyBatis-Guice ## SqlSession - 스프링이나 쥬스와 같은 의존성 삽입 프레임워크와 함께 사용할때 SqlSessions은 DI프레임워크에 의해 생성되고 삽입된다. - 그래서 SqlSessionFactoryBuilder나 SqlSessionFactory가 필요하지 않을 것이기 때문에 SqlSession섹션으로 바로 넘어가도 무방하다. - 추가적인 정보는 MyBatis-Spring이나 MyBatis-G..
마이바티스 간단하게 알아보기 - 0 JPA를 사용하더라도 MyBatis 기능은 같이 사용하는 경우가 많다. 오래된 프로그램이라면 순수하게 MyBatis나 더 나아가 iBatis를 사용할 수도 있다. 적어도 한국에서는 적어도 읽을 줄은 알아야 문제가 되지 않는 파트가 요 녀석이다. 중요한 기능을 중심으로 알아보도록 하겠다. 소개 및 설치 설정 XML 작성 동적 쿼리 작성
ResultMap은 반드시 써야 하나? MyBatis를 배우면서 resultMap에 대해서 배웠다. select, update 같은 구문으로 데이터를 가져오고 resultMap으로 DTO에 넣는 방식이었다. 배울 당시에는 아무런 생각이 없었는데, 현업에서는 막상 쓰는 사람도 있고 안 쓰는 사람도 있어서 궁금함이 생겼다. resultMap을 사용안해도 데이터를 가져올 수 있다면 왜 존재하는 거지? MyBatis 공식 홈페이지에서는 엄청나게 강력한 기능이라고 자랑까지 하던 기능인데 말이다. 핵심 키워드는 '자동'이었다. 쿼리를 자동으로 짤 수 있을 정도로 정형화되고 단순한 쿼리라면 일반 select 문으로도 충분하다. 하지만, 서브 쿼리를 깊게 파고들고 조인에 조인이 이어지고 여기저기 누더기처럼 엮어있고 데이터 양도 방대하다면 자동으로 짜는 쿼리..