Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- List데이터조회
- JavaScript #자바스크립트 #선택자 #HTML태그접근 #JS
- JavaScript #예제 #복습 #Web #웹 #개발자가되고파ㅜㅜ
- WEB
- 예제
- Java #자바 #초보개발자 #다형성 #동적바인딩 #instanceof #학습 #요약정리 #복습
- Spring
- JavaScript #자바스크립트 #복습 #배열 #Array
- Java
- 스프링
- 복습
- 서블릿기초 #servlet #java #webprogramming
- mybatis자료형 #참고자료
- 데이터베이스 #DataBase #Oracle #DB #DataBase개요
- 페이징처리예제
- 데이터조회예제
- 동적sql
- 프레임워크
- 어노테이션
- 특징및기본구조
- Java #JDBC #Mybatis #동적SQL
- 정리
- Java #자바 #인터페이스 #implements #다형성 #interface #복습 #정리 #나만의공부
- Java #Web #공부 #복습 #Servlet #서블릿 #포워드 #sendRedirect #dispatcher
- JavaScript #선언적함수 #익명함수 #화살표함수 #함수선언방법 #복습
- springframework
- mybatis
- JavaScript #인라인 #인터널 #익스터널 #데이터입출력
- 데이터매핑
- fremework
Archives
- Today
- Total
개발군싹
Mybatis - TypeHandler 설정 본문
데이터 베이스에 스트링으로 저장된 데이터를 DTO객체에 배열로 가져오고 싶을 때 Mybatis에서 제공하는 TypeHandler를 이용하여 처리할 수 있다.
<result column="hobby" property="hobby" typeHandler="strArr"/>
데이터베이스의 취미 데이터를 ',' 기준으로 hobby (String[]) 배열에 저장하기 위해 mapper의 <resultMap> 내부에 <result> 태그의 속성으로 'typeHandler' 선언한다.
클래스 생성 중 Mybatis가 제공하는 'TypeHandler Interface'를 추가한다.

package com.mybatis.common;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
public class StringArrayTypeHandler implements TypeHandler<String[]> {
@Override
public String[] getResult(ResultSet arg0, String arg1) throws SQLException {
String data = arg0.getString(arg1);
return data!=null?data.split(","):null;
}
@Override
public String[] getResult(ResultSet arg0, int arg1) throws SQLException {
String data = arg0.getString(arg1);
return data!=null?data.split(","):null;
}
@Override
public String[] getResult(CallableStatement arg0, int arg1) throws SQLException {
String data = arg0.getString(arg1);
return data!=null?data.split(","):null;
}
@Override
public void setParameter(PreparedStatement arg0, int arg1, String[] arg2, JdbcType arg3) throws SQLException {
arg0.setString(arg1, arg2!=null?String.join(",",arg2):null);
}
}
➡️ TypeHandler Interface Implements(상속) 시 위 코드와 같이 오버라이드 메소드가 생성되고 해당 오버라이드 메소드를 재정의 해주어 동작시킬 수 있다. => Mybatis 또한 JDBC를 기반으로 만들어진 Framework이기 때문에 ResultSet, PreparedStatement를 이용하여 데이터베이스의 값을 조작하는것을 알 수 있다.
➡️ TypeHandler는 Mybatis가 내부적으로 동작하는 메소드를 재정의 함으로써 <result>태그에서 Typehandler 선언부를 만났을 시 오버라이딩 메소드를 실행시켜 배열 데이터 또한 처리가 가능하다.
'Mybatis' 카테고리의 다른 글
| 4) mybatis를 이용한 동적 SQL (if,where,trim) (1) | 2023.12.04 |
|---|---|
| 3-3) mybatis-#{} 과 ${}의 차이 (0) | 2023.12.04 |
| 3-2) mybatis에서 페이징 처리 (1) | 2023.12.04 |
| 3-1) mybatis 데이터 조회(Map / DTO를 이용하지 않고 조회하기) (0) | 2023.12.04 |
| 3) mybatis 데이터 조회(List) (0) | 2023.12.04 |