CS/개발공부

Mybatis - 사용법

ch.0 2023. 5. 2. 23:55

Mybatis 정의

Mybatis는 개발자가 지정한 SQL, 저장 프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. Mybatis는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다. Mybatis는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다.

Mybatis 설정

pom.xml

dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.5</version>
</dependency>

SqlSessionFactory 빌드하기

<?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>
	<!-- 프로퍼티 파일의 정보를 읽을 수 있도록 설정. -->
	<properties resource="mybatis/db.properties" />
	
	<!-- 트랜젝션 관리와 케넥션 풀링을 위한 환경설 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
  
  <!-- SQL 코드와 매핑 정의를 가지는 XML 파일인 mapper 의 목록을 지정한다. -->
	<mappers>
		<mapper resource="mybatis/UserMapper.xml"/>
	</mappers>
</configuration>

접속정보는 db.properties처럼 따로 빼서 설정하기도 함.

UserMapper.xml 란 쿼리문이 들어있는 xml을 말함. 경로/**/*.xml 형식으로 만들어 놓고 파일을 분리해서 만들어 호출도 가능함.

Build

public void SqlFactorySessionBuild(){
  	//설정정보의 InputStream을 받아온다.
  	String resource = "mybatis-config.xml";
  	InputStream inputStream = getClass().getResourceAsStream(resource);
  	
  	//InputStream을 통해 설정정보를 읽어서 SqlSessionFactory를 빌드한다.
  	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
  			.build(inputStream);
  	
  	assertThat(sqlSessionFactory,notNullValue());
  }

혹은 DAO에서 상속받아 빌드도 가능하다.

public class _DAO extends SqlSessionDaoSupport{

@Resource(name="sqlSessionFactory")...
}

이렇게 할경우 application-resource.xml 같은 파일을 만들어 bean 설정을 만들어준다

<bean id="sqlSessionFactory" class=...

해당클래스는 FactoryBean을 또 만들어줘야한다.