티스토리 뷰

   1. 파일 다운로드

   https://code.google.com/p/mybatis/downloads/list


mybatis-3.2.3.jar


   라이브러리 파일을 다운 받아서 lib 폴더에 넣는다.



   2. DB 정보를 담은 properties 파일 작성 (db.properties) - 오라클 기준해서 써놨다. 각자 상황에 따라서 변경.

1
2
3
4
5
## database connection property.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:포트번호:xe
username=username
password=password



   3. Mapper 작성 (member.xml)


   제일 위에 독타입 선언해주고,

<?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">


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<mapper namespace="kr.co.test.mybatis.mappers.memberMapper">
     
    <select id="selectMember" parametertype="string" resulttype="kr.co.test.vo.MemberDTO">
        SELECT
            *
        FROM MEMBER
        WHERE MEM_ID  = #{noname}
    </select>
 
    <update id="updateMember" parametertype="kr.co.test.vo.MemberDTO">
        UPDATE TBL_FEEDS
        SET
        MEM_NAME = '${mem_name}'
        MEM_PHONE = '${mem_phone}'
        MEM_ADDR = '${mem_addr}'
        WHERE MEM_ID  = '${mem_id}'
    </update>
     
</mapper>

위와 같이 코딩. member 테이블이 있다는 가정 하에 예를 들어서 코딩한 것.

mybatis의 경우 ibatis와 다르게 interface를 사용하는 방법도 있으나 자세한 사항은 매뉴얼을 참조.


   3. mybatis xml 설정 파일 작성 (configuration.xml)

mapper파일과 마찬가지로 맨 위에 독타입 선언하고 아래와 같이 코딩.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<configuration>
   
    <properties resource="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}">
            </property></property></property></property></datasource>
        </transactionmanager></environment>
    </environments>
 
    <mappers>
        <mapper resource="kr/co/test/mybatis/mappers/memberMapper.xml">
    </mapper></mappers>
   
</properties></configuration>


   4.  SqlSessionFactory 빌드하기 (SqlMapSessionFactory.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
31
32
33
import java.io.IOException;
import java.io.InputStream;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
public class SqlMapSessionFactory {
 
    public static SqlSessionFactory ssf;
     
    static{
         
        String resource = "kr/co/test/mybatis/configuration.xml";
        InputStream inputStream = null;
         
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
         
        ssf = new SqlSessionFactoryBuilder().build(inputStream);
 
    }
     
     
    public static SqlSessionFactory getSqlSessionFactory(){
        return ssf;
    }
     
     
}


   5. DAO 작성 (MemberDAO.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
31
32
33
34
35
36
public class MemberDao {
 
    private MemberDao() {}
     
    private static MemberDao dao;
     
    public static MemberDao getInstance(){
        if(dao == null){
            dao = new MemberDao();
        }
         
        return dao;
    }
     
    SqlSessionFactory factory = SqlMapSessionFactory.getSqlSessionFactory();
     
    public MemberDTO selectMember(String mem_id) {
        SqlSession session = factory.openSession();
        MemberDTO memberDTO = session.selectOne("kr.co.test.mybatis.mappers.memberMapper.selectMember", mem_id);
        session.close();
         
        return memberDTO;
    }
 
    public int updateMember(MemberDTO memberDTO) {
        SqlSession session = factory.openSession();
        int update = session.update("kr.co.test.mybatis.mappers.memberMapper.updateMember", memberDTO);
        // update나 delete의 경우 반드시 커밋 필요.
        // session.commit();을 해주거나 factory.openSession(true);로 설정하면 자동 커밋된다.
        session.commit();
        session.close();
         
        return update;
    }
     
}


   6. Service 작성 (MemberService.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
31
32
33
34
public class MemberService {
 
    private MemberService(){}
     
    private static MemberService service;
     
    private MemberService dao = MemberService.getInstance();
     
    public static MemberService getInstance(){
        if(service == null){
            service = new MemberService();
        }
        return service;
    }
     
    enum MemberResult {OK, FAIL};
 
    public String getMember(String mem_id) {
        return dao.selectMember(mem_id);
    }
     
    public MemberResult modifyMember(MemberDTO memberDTO) {
         
        int result = dao.updateMember(memberDTO);
         
        if(result > 0){
            return MemberResult.OK;
        }else{
            return MemberResult.FAIL;
        }
         
    }
     
}



   Interface 과정 다 생략하고 아주 간단하게 예를 들어서 써봤다.


   mybatis 관련해서 자세한 설정을 원한다면 매뉴얼을 참고하길 바란다. (위에 내가 해놓은 것들은 type alias도 안하고 그냥 초간단하게 만들어놓은 것임.)

   → http://mybatis.github.io/mybatis-3/ko/index.html


   찾아보면 PDF로 된 매뉴얼도 있으니 검색해볼 것.



댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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
글 보관함