[Mybatis]마이바티스 설정하기.

마이바티스MyBatis 홈페이지 https://code.google.com/p/mybatis/


iBatis       ->    MyBatis  가 되었다.

(apache)         (Google)


mybatis는 자바 소스안에 쿼리를 두지않고 따로 관리한다.

쿼리를 수정하게 되더라도 다시 재 컴파일 할 필요가 없다는 것이다.


1. 마이바티스 라이브러리 추가.


홈페이지에서 라이브러리 다운로드.

클래스패스에 라이브러리 추가.


혹은


메이븐 툴을 이용하여 의존성 주입.


2. 설정파일 생성.


- 설정파일 이름은 자신이 정하는 것이다.


-mybatis-config.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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>
  
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/exam"/>
        <property name="username" value="root"/>
        <property name="password" value="java1234"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
    <mapper resource="AdminMapper.xml"/>
  </mappers>
  
</configuration>


AdminMapper.xml은 쿼리를 모아놓은 xml파일이다.

여러개를 만들 수 있으며 실행 될때 전부 합쳐진다. 관리상 나눈것이다.



-AdminMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
<mapper namespace="AdminMapper">
    <select id="selectAdminById" resultType="domain.Admin" parameterType="String">
        SELECT admin_name as adminName
             , admin_id as adminId
             , admin_password as adminPw
        FROM ADMIN
        WHERE admin_id = #{adminId}
    </select>
</mapper>


select태그의 resultType은 쿼리를 실행 후 리턴할 데이터 형이고, parameterType은 입력하는 데이터 형을 말한다.


쿼리문 중 #{}를 이용하여 변수를 입력한다.


3.Dao에서 xml파일 호출, 실행.


-AdminDao.java
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
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;
 
import domain.Admin;
 
public class AdminDao {
    SqlSessionFactory sqlSessionFactory = null;
    
    public AdminDao(){
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
 
    public Admin selectAdminbyId(String adminId){
        SqlSession session = sqlSessionFactory.openSession();
        
        return session.selectOne("AdminMapper.selectAdminById", adminId);
    }
}


- InputStream에 xml파일 리소스를 넣고, 이 것으로 sqlSessionFactory를 만든다.


- dao메소드에 팩토리를 이용하여 sqlSession을 만들고(db에 접속하고),

따로 만든xml파일의 쿼리문을 호출(namespace + sql Id로 호출.), 입력할 변수가 잇다면 변수도 입력한다.


- 리턴 형은 위의 xml파일의 쿼리문의 resultType으로 지정 되어있다.

댓글()