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을 동적으로 만드는 것이다.문자열 대체를 통한 쿼리의 재구성 ${}를 이용한 쿼리 작성이제까지 SQL을 작성하면서 사용했던 플레이스 홀더로 #을 사용했었는데 $도 사용할 수 있다. 이 둘의 차이를 살펴보자.구분#{ } : 바인딩 플레이스 홀더 $ { }: 문자열 치환 플레이스 홀더용도값 바인딩문자열 치환변경 가능성값만 대체 가능테이블명, 컬럼명 등 구조까지 변경 가능처리 방식PreparedStatement 사용Statement 사용SQL 인젝션 공격안전취약${}는 SQL 삽입 공격이 발생할 수 있기 때문에 사용을 지양하는 것이 좋지만 쿼리의 구조를 변경할 수 있다는..
[MyBatis] 04. 동적 쿼리이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다.문자열 대체를 통한 쿼리의 재구성 ${}를 이용한 쿼리 작성이제까지 SQL을 작성하면서 사용했던 플레이스 홀더로 #을 사용했었는데 $도 사용할 수 있다. 이 둘의 차이를 살펴보자.구분#{ } : 바인딩 플레이스 홀더 $ { }: 문자열 치환 플레이스 홀더용도값 바인딩문자열 치환변경 가능성값만 대체 가능테이블명, 컬럼명 등 구조까지 변경 가능처리 방식PreparedStatement 사용Statement 사용SQL 인젝션 공격안전취약${}는 SQL 삽입 공격이 발생할 수 있기 때문에 사용을 지양하는 것이 좋지만 쿼리의 구조를 변경할 수 있다는..
2023.06.18 -
이번 포스트에서는 database에서 select로 조회한 내용을 java object 즉 DTO에 매핑하는 내용에 대해 다양하게 살펴보자. MyBatis의 조회 결과 매핑 방식 기본 매핑데이터베이스 테이블의 컬럼명과 DTO의 속성 명이 일치하면 자동으로 매핑이 된다. 이때 대소문자는 구별하지 않는다.select code, name, continent, region, surfacearea from country@Datapublic class Country { private String code; private String name; private String continent; private String region = ""; private Double surfaceArea ..
[MyBatis] 03. 조회 결과의 매핑이번 포스트에서는 database에서 select로 조회한 내용을 java object 즉 DTO에 매핑하는 내용에 대해 다양하게 살펴보자. MyBatis의 조회 결과 매핑 방식 기본 매핑데이터베이스 테이블의 컬럼명과 DTO의 속성 명이 일치하면 자동으로 매핑이 된다. 이때 대소문자는 구별하지 않는다.select code, name, continent, region, surfacearea from country@Datapublic class Country { private String code; private String name; private String continent; private String region = ""; private Double surfaceArea ..
2023.06.18 -
이번 포스트에서는 MyBatis를 이용한 CRUD(Create, Read, Update, Delete)쿼리 처리를 통해 기본 사용법을 익혀보자. MyBatis를 이용한 CRUD 기본적인 동작 방식의 결정MyBatis도 오랜 기간 사용되면서 다양한 방식으로 사용되는데 크게 두 가지 방식으로 요약할 수 있다.repo interface -> repo interface impl -> mapper.xml: 가장 기본적인 형태repo interface -> mapper.xml: naming rule을 기반으로하는 축약 형태기본적으로는 2의 방법을 사용할 계획이지만 너무 급작스럽게 생략된 형태를 사용하면 쉽지 않으므로 1의 방식을 먼저 연습하고 2로 넘어가도록 하자.참고로 이 외에도 mapper xml 없이 그냥 ..
[MyBatis] 02. CRUD이번 포스트에서는 MyBatis를 이용한 CRUD(Create, Read, Update, Delete)쿼리 처리를 통해 기본 사용법을 익혀보자. MyBatis를 이용한 CRUD 기본적인 동작 방식의 결정MyBatis도 오랜 기간 사용되면서 다양한 방식으로 사용되는데 크게 두 가지 방식으로 요약할 수 있다.repo interface -> repo interface impl -> mapper.xml: 가장 기본적인 형태repo interface -> mapper.xml: naming rule을 기반으로하는 축약 형태기본적으로는 2의 방법을 사용할 계획이지만 너무 급작스럽게 생략된 형태를 사용하면 쉽지 않으므로 1의 방식을 먼저 연습하고 2로 넘어가도록 하자.참고로 이 외에도 mapper xml 없이 그냥 ..
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