ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. 기본 사용법 (MySql, Oracle)
    Develpment/MyBatis 2020. 9. 13. 21:19

    1. 기본 구조


     


     1) Value Object 정의

         - 원하는 컬럼명들과 동일한 이름으로 "멤버변수" 선언

     2) Mapper 정의

         - Sql Query 정의

     3) Config 정의

         - RDBMS 지정

         - Mapper 지정

     4) 프로그램에서 config를 가져와서 사용. 




    2. 사용 예제


    MyBatis doc ( http://www.mybatis.org/mybatis-3/ko/index.html ) 참고.


     예제에 사용된 테이블 

     




     2-1. VO Class

     

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    package ex1.vo;
     
    public class EmpVO {
        // 테이블로 부터 가져오고자 하는 
        // 컬럼들을 멤버 변수로 정의한다.
        
        private String employee_id, first_name, email, salary, department_id;
     
        public String getEmployee_id() {
            return employee_id;
        }
     
        public void setEmployee_id(String employee_id) {
            this.employee_id = employee_id;
        }
     
        public String getFirst_name() {
            return first_name;
        }
     
        public void setFirst_name(String first_name) {
            this.first_name = first_name;
        }
     
        public String getEmail() {
            return email;
        }
     
        public void setEmail(String email) {
            this.email = email;
        }
     
        public String getSalary() {
            return salary;
        }
     
        public void setSalary(String salary) {
            this.salary = salary;
        }
     
        public String getDepartment_id() {
            return department_id;
        }
     
        public void setDepartment_id(String department_id) {
            this.department_id = department_id;
        }
        
        
    }
     
    cs

     Field 명과 VO Class의 멤버 변수명이 일치해야 한다.


     ( ex1.vo.EmpVO.java )


     2-2. Mapper


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?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="emp">
      <select id="all" resultType="ex1.vo.EmpVO">
        select * from employees
      </select>
    </mapper>

    c

     namespace : 구분을 위한 namespace

     id : 구분을 위한 id

     resultType : 리턴값으로 사용될 VO


    ( ex1/mapper/emp.xml )


     2-3. Config ( Mysql, Oracle 순서)

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?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="">                        <!-- DB configure -->
        <environment id="">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://접속아이피:허용포트/디비명"/>
            <property name="username" value="접속계정"/>
            <property name="password" value="암호"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="ex1/mapper/emp.xml"/>        <!-- mapper -->
      </mappers>
    </configuration>
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?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="">                        <!-- DB configure -->
        <environment id="">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="oracle.jdbc.OracleDriver"/>
            <property name="url" value="jdbc:oracle:thin:@접속아이피:허용포트:디비명"/>
            <property name="username" value="접속계정"/>
            <property name="password" value="암호"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="ex1/mapper/emp.xml"/>        <!-- mapper -->
      </mappers>
    </configuration>
    cs

     각각 접속아이피, 포트, 디비명, 계정, 암호를 넣어준다.

     ( 외부에서 접속할 경우 외부접속 허용된 계정, 포트가 필요 )


     resource 에 "2-2"에서 작성한 Mapper를 넣어준다.


    2-4.  Application 사용 예제

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package ex1.client;
     
    import java.io.IOException;
    import java.io.Reader;
    import java.util.List;
     
    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 ex1.vo.EmpVO;
     
    public class Main {
     
        public static void main(String[] args) throws IOException {
            // 1) MyBatis의 환경설정 파일과 연결할 스트림
            Reader r = Resources.getResourceAsReader("ex1/config/config.xml");
            
            // 2) 연결된 파일로 부터 정보를 인식 - factory 생성
            //SqlSessionFactoryBuilder sb = new SqlSessionFactoryBuilder();
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(r);
            
            // factory가 생성 되었으므로 더이상 r은 필요가 없다.
            r.close();
            
            // 3) factory를 통해서 SqlSession을 얻어낸다.
            SqlSession ss = factory.openSession();
            
            // 4) SqlSession을 통하여 원하는 SQL문을 호출하여 결과를 얻어낸다.
            List<EmpVO> list = ss.selectList("emp.all");
            
            // 5) 결과 처리
            for(EmpVO vo : list)
            {
                System.out.println(vo.getEmployee_id() + "/" +
                        vo.getEmail() + "/" +
                        vo.getDepartment_id() + "/" +
                        vo.getFirst_name() + "/" +
                        vo.getSalary());
            }
            
            // 6) 사용된 세션닫기
            ss.close();
        }
     
    }
    cs

     



    'Develpment > MyBatis' 카테고리의 다른 글

    3. MyBatis로 값 전달하기.  (0) 2020.09.13
    1. 기본 설정 (MyBatis, eclipse, MySql)  (0) 2020.09.13

    댓글

Designed by Tistory.