본문 바로가기

웹개발

[MyBatis/iBATIS] iBATIS기초 - 설치 & 이클립스를 이용한 DB연동

1. 우선 iBATIS 를 다운받습니다.

2. 다운을 풀고, /lib 폴더에 ibatis-2.3.4.726 를 톰캣의 lib폴더나 프로젝트의 web-inf/lib 폴더에 넣습니다.
- /현제프로젝트/WebContent/WEB-INF/lib/
- /톰캣/lib/   (톰캣6버전)

두폴더중 편한곳에다가 jar파일을 저장합니다.


3. example 폴더를 타고 들어가보면 sqlMapConfi.xml 파일이 있습니다. 이파일을 복사해서 붙여넣기 하셔도되고
src폴더에서 새로 xml 파일을 만드셔도 됩니다.

sqlMapClient.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

  <!-- Configure a built-in transaction manager.  If you're using an 
       app server, you probably want to use its transaction manager 
       and a managed datasource -->
  <transactionManager type="JDBC" commitRequired="false">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="org.hsqldb.jdbcDriver"/>
      <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@192.168.10.103:1521:db"/>
      <property name="JDBC.Username" value="ahm"/>
      <property name="JDBC.Password" value="ahm"/>
    </dataSource>
  </transactionManager>

  <!-- List the SQL Map XML files. They can be loaded from the 
       classpath, as they are here (com.domain.data...) -->
  <sqlMap resource="db/Account.xml"/>
  <!-- List more here...
  <sqlMap resource="com/mydomain/data/Order.xml"/>
  <sqlMap resource="com/mydomain/data/Documents.xml"/>
  -->

</sqlMapConfig>

빨간부분으로 표시된부분이 제가 수정한 부분입니다. db정보는 propertie로 빼서 관리하는방법도 있으나, 
우선은 이렇게 하도록 하겠습니다. 

4. 자바빈즈를 생성합니다. 

db라는 패키지를 만들고 그 밑에 Acount.java 파일을 생성합니다. 결과를 담아올 빈즈입니다. 
Account.java

package
 db;

public class Account {
  private int id;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }
}

5. XML을 생성합니다.

우리가 사용할 쿼리를 작성하는 XML입니다.
Account.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Account">
  <!-- Select with no parameters using the result map for Account class. -->
  <select id="getAcount" resultClass="db.Acount">  다음값을 이용하여 쿼리와 맵핑합니다.
    select id from ACCOUNT where name=#value#
  </select>
</sqlMap>

6. 이제 쿼리를 실행할 JAVA를 작성한다.

SimpleExample.java

package db;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.common.resources.Resources;

import java.io.Reader;
import java.io.IOException;
import java.sql.SQLException;

public class SimpleExample {

  private static SqlMapClient sqlMapper;

  static {
    try {
      Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
      sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
      reader.close(); 
    } catch (IOException e) {
      // Fail fast.
      throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
    }
  }

  public static Account getAcount() throws SQLException {
    return (Account)sqlMapper.queryForObject("getAcount","ahm");
    // 이부분에서 쿼리를 실행한다. queryForObject는 한개의 데이터를 가져올떄 사용하는 메소드이다.
  }
  
  public static void main(String[] args){
    
    try {
    Account temp = getAcount();    
    System.out.println(temp.getId());
  } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  }
}

물론 이 java파일을 실행하기 전에는 DB에 TABLE과 데이터가 준비되어있어야겠다.

현제 이클립스내에 폴더구조이다.


이미지와 같이 , iBATIS 를 설정하는 설정파일인 sqlMapConfig.xml 파일과
               실제 SQL이 담겨져 있는 Account.xml 파일
               결과를 담아올 객체인   Account.java 파일
               이러한 과정을 호출하는 SimpleExample.java 파일
               그리고 WEB-INF/lib 에 ibatis-**.jar 파일 등을 해당폴더에 넣고 위에 순서대로 따라한다면
               DB에서 요청사항을 무난히 가져올수 있을것이다. 

다음엔 좀더 세부적인 설정사항이라던지 자세한 정보를 보여드리겠습니다.