MyBatis
-
이번 포스트에서는 enum 타입의 컬럼을 mybatis에서 사용하기 위한 방법을 알아보자. TypeHandler Mybatis에서는 PreparedStatement에 파라미터를 설정하거나 결과를 가져올 때 TypeHandler라는 것을 사용한다. https://mybatis.org/mybatis-3/ko/configuration.html#typeHandlers MyBatis – 마이바티스 3 | 매퍼 설정 매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할 mybatis.org 당연히 자주 사용되는 타입에 대해서 다양한 TypeHandle..
[MyBatis] 06. Enum 타입의 활용이번 포스트에서는 enum 타입의 컬럼을 mybatis에서 사용하기 위한 방법을 알아보자. TypeHandler Mybatis에서는 PreparedStatement에 파라미터를 설정하거나 결과를 가져올 때 TypeHandler라는 것을 사용한다. https://mybatis.org/mybatis-3/ko/configuration.html#typeHandlers MyBatis – 마이바티스 3 | 매퍼 설정 매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할 mybatis.org 당연히 자주 사용되는 타입에 대해서 다양한 TypeHandle..
2023.06.18 -
이번 포스트에서는 MyBatis를 쓰면서 알아두면 유용한 내용이나 주의 사항들을 정리해본다. 쿼리 작성 시 주의점 부등호 사용 시 주의점 MyBatis는 일반적으로 XML 문서에 쿼리를 작성한다. XML은 문서의 특성상 를 예약어로 사용한다. 따라서 SQL에서 값의 대/소 비교를 위해 부등호를 사용하면 문서가 well-formed 하지 않다는 오류가 발생한다. The content of elements must consist of well-formed character data or markup. 이 문제를 처리하기 위해 XML의 CDATA (character data) section 안에 쿼리를 작성하면 XML 파서가 아예 파싱하지 않고 단순 문자열로 처리된다. select * from country ..
[MyBatis] 05. 기타이번 포스트에서는 MyBatis를 쓰면서 알아두면 유용한 내용이나 주의 사항들을 정리해본다. 쿼리 작성 시 주의점 부등호 사용 시 주의점 MyBatis는 일반적으로 XML 문서에 쿼리를 작성한다. XML은 문서의 특성상 를 예약어로 사용한다. 따라서 SQL에서 값의 대/소 비교를 위해 부등호를 사용하면 문서가 well-formed 하지 않다는 오류가 발생한다. The content of elements must consist of well-formed character data or markup. 이 문제를 처리하기 위해 XML의 CDATA (character data) section 안에 쿼리를 작성하면 XML 파서가 아예 파싱하지 않고 단순 문자열로 처리된다. select * from country ..
2023.06.18 -
동적 쿼리 이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다. 특정 Continent에 속한 Country들의 정보를 조회하는 것과 특정 Region에 속한 국가들을 조회하는 것은 검색 조건만 다를 뿐 쿼리의 구조는 동일하다. 하지만 어쨌든 다른 쿼리이기 때문에 이제까지는 별도의 쿼리로 작성해야 했다. 문제는 단지 쿼리를 따로 만들면 끝나는 것이 아니라 이에 따라 mapper interface, service 등 호출 체계 전반적으로 작업이 늘어나게 된다. 이런 과정을 손쉽게 해결할 수 있는것이 동적 쿼리(또는 동적 SQL)이다. Java 같은 프로그래밍 언어라면 손쉽게 프로그래밍 할 수..
[MyBatis] 04. 동적 쿼리동적 쿼리 이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다. 특정 Continent에 속한 Country들의 정보를 조회하는 것과 특정 Region에 속한 국가들을 조회하는 것은 검색 조건만 다를 뿐 쿼리의 구조는 동일하다. 하지만 어쨌든 다른 쿼리이기 때문에 이제까지는 별도의 쿼리로 작성해야 했다. 문제는 단지 쿼리를 따로 만들면 끝나는 것이 아니라 이에 따라 mapper interface, service 등 호출 체계 전반적으로 작업이 늘어나게 된다. 이런 과정을 손쉽게 해결할 수 있는것이 동적 쿼리(또는 동적 SQL)이다. Java 같은 프로그래밍 언어라면 손쉽게 프로그래밍 할 수..
2023.06.18 -
조회 결과의 매핑 이번 포스트에서는 database에서 select로 조회한 내용을 java object 즉 DTO에 매핑하는 내용에 대해 다양하게 살펴보자. MyBatis의 조회 결과 매핑 방식 MyBatis는 다양한 방식으로 조회 결과를 DTO에 매핑시킬 수 있다. 기본 매핑 데이터베이스 테이블의 컬럼명과 DTO의 속성 명이 일치하면 자동으로 매핑이 된다. 이때 대소문자는 구별하지 않는다. select code, name, continent, region, surfacearea from country @Data public class Country { private String code; private String name; private String continent; private String r..
[MyBatis] 03. 조회 결과의 매핑조회 결과의 매핑 이번 포스트에서는 database에서 select로 조회한 내용을 java object 즉 DTO에 매핑하는 내용에 대해 다양하게 살펴보자. MyBatis의 조회 결과 매핑 방식 MyBatis는 다양한 방식으로 조회 결과를 DTO에 매핑시킬 수 있다. 기본 매핑 데이터베이스 테이블의 컬럼명과 DTO의 속성 명이 일치하면 자동으로 매핑이 된다. 이때 대소문자는 구별하지 않는다. select code, name, continent, region, surfacearea from country @Data public class Country { private String code; private String name; private String continent; private String r..
2023.06.18 -
MyBatis를 이용한 CRUD 이번 포스트에서는 MyBatis를 이용한 CRUD(Create, Read, Update, Delete)쿼리 처리를 통해 기본 사용법을 익혀보자. MyBatis도 오랜 기간 사용되면서 다양한 방식으로 사용되는데 전체적인 동작을 이해하기 위해 가장 기본적인 형태인 repo interface -> repo interface impl -> mapper.xml의 형태와 naming rule을 적용해서 repo interface impl.을 제외하고 repo interface -> mapper.xml 형태로 간단히 사용하는 형태 두 가지를 살펴볼 계획이다. 참고로 이 외에도 mapper xml 없이 그냥 repo interface에 애너테이션으로 작성하기도 한다. 일단 다음의 그림을..
[MyBatis] 02. CRUDMyBatis를 이용한 CRUD 이번 포스트에서는 MyBatis를 이용한 CRUD(Create, Read, Update, Delete)쿼리 처리를 통해 기본 사용법을 익혀보자. MyBatis도 오랜 기간 사용되면서 다양한 방식으로 사용되는데 전체적인 동작을 이해하기 위해 가장 기본적인 형태인 repo interface -> repo interface impl -> mapper.xml의 형태와 naming rule을 적용해서 repo interface impl.을 제외하고 repo interface -> mapper.xml 형태로 간단히 사용하는 형태 두 가지를 살펴볼 계획이다. 참고로 이 외에도 mapper xml 없이 그냥 repo interface에 애너테이션으로 작성하기도 한다. 일단 다음의 그림을..
2023.06.18 -
MyBatis 앞으로 우리가 사용할 MyBatis에 대해 간략히 알아보자. 소개 MyBatis란 SQL을 편하게 작성할 수 있도록 SQL-Object 매핑을 지원하는 Persistence Framework으로 주요 특징은 다음과 같다. 기본적으로 PreparedStatement를 사용하기 때문에 SQL 삽입 공격에 대해 안전하다. ResultSet의 내용을 DTO나 컬렉션에 저장하기 위한 코드가 필요 없다. 일반적으로 XML에서 SQL 쿼리를 작성한다. 프로그램 코드와 SQL의 분리로 코드가 간결해지고 유지 보수성이 향상된다. MyBatis에 대해서는 아래 사이트에서 한글로 자세한 document를 제공하므로 즐겨 찾기에 추가하고 자주 살펴보기를 권한다. MyBatis – 마이바티스 3 | 소개 마이바티..
[MyBatis] 01. 소개 및 환경 설정MyBatis 앞으로 우리가 사용할 MyBatis에 대해 간략히 알아보자. 소개 MyBatis란 SQL을 편하게 작성할 수 있도록 SQL-Object 매핑을 지원하는 Persistence Framework으로 주요 특징은 다음과 같다. 기본적으로 PreparedStatement를 사용하기 때문에 SQL 삽입 공격에 대해 안전하다. ResultSet의 내용을 DTO나 컬렉션에 저장하기 위한 코드가 필요 없다. 일반적으로 XML에서 SQL 쿼리를 작성한다. 프로그램 코드와 SQL의 분리로 코드가 간결해지고 유지 보수성이 향상된다. MyBatis에 대해서는 아래 사이트에서 한글로 자세한 document를 제공하므로 즐겨 찾기에 추가하고 자주 살펴보기를 권한다. MyBatis – 마이바티스 3 | 소개 마이바티..
2023.06.18 -
pageHelper 웹 페이지를 만들면서 페이징 처리는 반드시 있어야 하는 내용이다. 하지만 DB마다 다른 쿼리를 사용해야하는 점이나 전체 페이지, 현재 페이지, 페이지당 데이터 수 등을 계산하기가 쉽지않다. JPA에는 별도로 Paging 관련 기능이 있는데 MyBatis에서는 관련 기능을 찾지 못하다 최근에 PageHelper라는 녀석이 눈에 띄어서 포스팅해본다. https://github.com/pagehelper/Mybatis-PageHelper pagehelper/Mybatis-PageHelper Mybatis通用分页插件. Contribute to pagehelper/Mybatis-PageHelper development by creating an account on GitHub. github.c..
Spring + mybatis + PageHelperpageHelper 웹 페이지를 만들면서 페이징 처리는 반드시 있어야 하는 내용이다. 하지만 DB마다 다른 쿼리를 사용해야하는 점이나 전체 페이지, 현재 페이지, 페이지당 데이터 수 등을 계산하기가 쉽지않다. JPA에는 별도로 Paging 관련 기능이 있는데 MyBatis에서는 관련 기능을 찾지 못하다 최근에 PageHelper라는 녀석이 눈에 띄어서 포스팅해본다. https://github.com/pagehelper/Mybatis-PageHelper pagehelper/Mybatis-PageHelper Mybatis通用分页插件. Contribute to pagehelper/Mybatis-PageHelper development by creating an account on GitHub. github.c..
2020.06.23