본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)/Java 기본

Mybatis jdbctype(마이바티스 Jdbctype)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2022. 7. 18.

 

마이바티스(Mybatis)에서 사용되는 JDBC TYPE 모음 입니다.

jdbcType 값은 반드시 대문자로 사용해야합니다!

SQL Server 형식 JDBC 형식(jdbcType) Java(JavaType)
bigint BIGINT long
binary BINARY byte[]
bit BIT boolean
char CHAR String
date DATE java.sql.Date
datetime TIMESTAMP java.sql.Timestamp
datetime2 TIMESTAMP java.sql.Timestamp
datetimeoffset(2) microsoft.sql.Types.DATETIMEOFFSET microsoft.sql.DateTimeOffset
decimal DECIMAL java.math.BigDecimal
float DOUBLE double
image LONGVARBINARY byte[]
int INTEGER int
money DECIMAL java.math.BigDecimal
nchar CHAR String
ntext LONGVARCHAR String
numeric NUMERIC java.math.BigDecimal
nvarchar VARCHAR String
nvarchar(max) VARCHAR String
real REAL float
smalldatetime TIMESTAMP java.sql.Timestamp
smallint SMALLINT short
smallmoney DECIMAL java.math.BigDecimal
text LONGVARCHAR String
time TIME(1) java.sql.Time(1)
timestamp BINARY byte[]
tinyint TINYINT short
udt VARBINARY byte[]
uniqueidentifier CHAR String
varbinary VARBINARY byte[]
varbinary(max) VARBINARY byte[]
varchar VARCHAR String
varchar(max) VARCHAR String
xml LONGVARCHAR String

 

위 내용을 토대로 샘플로 만든 resultMap이 추가된 xml 코드 입니다.

column값과 property값을 가급적 일치시켜야 나중에 햇갈리지(?)가 않습니다..^-^;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">  

<mapper namespace="내가만든네임스페이스">

  <resultMap id="고유아이디" type="내가만든DTO패키지.클래스이름">
    <result property="클래스의값1" column="컬럼명1" jdbcType="INTEGER" javaType="int" ></result>
    <result property="클래스의값2" column="컬럼명2" jdbcType="DATE" javaType="java.sql.Date" ></result>
    <result property="클래스의값3" column="컬럼명3" jdbcType="BLOB" javaType="byte[]" ></result>
  </resultMap>

  <select id="test" parameterType="java.util.Map" resultMap="고유아이디"> 
      쿼리..
  </select>
  
</mapper>

 

당연하게도 매핑할 객체(ORM)가 필요합니다.

매핑할 객체는 set과 get 형식의 클래스로 구현하면 됩니다(POJO, Plain Old Java Object)

물론 롬북(Lombok) 라이브러리를 활용하여 만들어도 됩니다.

package 내가만든DTO패키지;

import java.sql.Date;

public class 클래스이름 {

    private Integer 클래스의값1;
    private Date 클래스의값2;
    private byte[] 클래스의값3;
    
    public Integer get클래스의값1() {
        return 클래스의값1;
    }
    public void set클래스의값1(Integer 클래스의값1) {
        this.클래스의값1 = 클래스의값1;
    }
    public Date get클래스의값2() {
        return 클래스의값2;
    }
    public void set클래스의값2(Date 클래스의값2) {
        this.클래스의값2 = 클래스의값2;
    }
    public byte[] get클래스의값3() {
        return 클래스의값3;
    }
    public void set클래스의값3(byte[] 클래스의값3) {
        this.클래스의값3 = 클래스의값3;
    }

}

 

만약 매핑과 관련된 오류가 발생 한 다면 resultMap에 사용된 내 set get 객체가(POJO, DTO, VO)  마이바티스(mybatis) 설정에서 해당 객체가 등록되어있는지 확인해야 합니다.

resultMap이 동작 하려면 mybatis 설정에서(configuration) 타입 별칭(typeAliases)을 추가해야 합니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<settings>
		<!--생략...-->
	</settings>

	<typeAliases>
		<typeAlias type="내가만든DTO패키지.클래스이름" alias="고유아이디" />
	</typeAliases>	 
</configuration>

 

이상으로 간단하게 마이바티스(Mybatis)에서 사용되는 타입(jdbctype)에 대해서 소개하였습니다.

궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글