728x90

 

MyBatis 설정 정보 파일 세팅

1)class의 alias(별칭) 설정

2)DB 연결 설정

3)sql 구문 경로 설정

 

 <MyBatis Configuration파일의 태그 순서>

설정 파일의 최상위 태그인 <configuration></configuration> 안에

태그들이 아래의 순서대로 있어야 에러없이 잘 작동한다


 (properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?, reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)

 

<?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="/driver.properties"></properties>
	<environments default="development"> <!-- default 속성값 : environments 아래 하위 태그인 연결할 환경(environment)이 많은데 어떤 녀석을 기본값으로 부를지 지정 -->

		<environment id="development"> <!-- id속성 : environment 구분 -->  
			<transactionManager type="JDBC"/>  <!-- 트랜잭션(커밋,롤백)을 누가 관리할 것인지 설정 -->
			<dataSource type="POOLED"> <!-- ConnectionPool 사용 여부 -->

			 	<!-- 2)외부파일 로드 방식 -->
			 	<property name="driver" value="${driver}"/> <!-- el형식. jsp에서 쓴 el이랑 똑같은 el은 아닌 걸 주의. 단순 expression language일 뿐 함수 사용이나 그런게 안된다는 의미 -->
			 	<property name="url" value="${url}"/>
			 	<property name="username" value="${username}"/>
			 	<property name="passwoard" value="${password}"/> 
			 	<!-- 파일들을 읽어올 수 있게 properties태그 설정을 밖에 해야함 -->
			</dataSource>
		</environment>
	</environments>

</configuration> <!-- 다큐먼트 타입을 안쓰면 자동완성에 컨피겨 안뜨고 독타입부터 쓰라고 추천뜸  -->

 

728x90
반응형
728x90

 

1)기본 생성자 생성

public Template[] {}

 

2)public static SqlSession getSqlSession() 메소드 생성

 

3) SqlSession session = null;

 

4)MyBatis 설정파일 읽어오기

InputStream으로 마이바티스 환경설정 파일 mybatis-config.xml 로드

InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");

인풋스트림이 스트림이니 getResource할 때 AsStream으로 읽어와라는 의미

Resources.은 클래스임. 대문자 시작은 클래스.

Resources라는 클래스를 이용해서 resources폴더에 접근할 수 있게 되는 것

 

5) SqlSessionFactoryBuilder 클래스(객체) 생성

 

 

6)SqlSessionFactory 클래스(객체) 생성

5번에서 생성한 SqlSessionFactoryBuilder에 4번에서 로드한 mybatis-config.xml을 .bulid()로 연결

InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");

SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
SqlSessionFactory ssf = **ssfb.build(stream)**;
session = ssf.openSession(false); // false : 자동 커밋 하지않겠다는 의미 // 이중안전장치로 false 세팅함

 

 

7) SqlSession에 여태 생성하고 받아온 모든 데이터 넣기

SqlSessionFactory에 담아둔 설정파일 데이터와 함께 openSession()을 생성하면서 SqlSession 변수인 session에 넣어준다

InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");

SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 객체생성
SqlSessionFactory ssf = ssfb.build(stream); // 생성한 SqlSessionFactoryBuilder 객체(클래스)와 InputStream으로 읽어온 mybatis-config.xml
**session** = ssf.**openSession**(false);

 

※ close, commit, rollback 메소드는 안써도 MyBatis에서 처리함

 

 

전체코드

package common;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Template {
	
	public Template() {} // 기본 생성자
	
	public static SqlSession getSqlSession() {
		
		
		SqlSession session = null;
		
			try {
				// MyBatis 설정파일 읽어오기
				InputStream stream = Resources.getResourceAsStream("/mybatis-config.xml");
				
				SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 객체생성
				SqlSessionFactory ssf = ssfb.build(stream); // 생성한 SqlSessionFactoryBuilder 객체(클래스)와 InputStream으로 읽어온 mybatis-config.xml
				session = ssf.openSession(false); // false : 자동 커밋 하지않겠다는 의미 // 이중안전장치로 false 세팅함
				// * 위의 세줄 한줄로 단축 가능

				// close, commit, rollback 메소드는 안써도 마이바티스에서 처리해줌
				
			} catch (IOException e) {
				e.printStackTrace();
			}
			return session;
	}

	
}

 

728x90
반응형

+ Recent posts