ibatis가 이제 mybatis가 되었네요. 구성파일이 분리가 되고 편리해졌네요.

 먼저 구성파일입니다.

 

Configuration.xml

<?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="config.properties"></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}"/>
   </dataSource>
  </environment>
 </environments>
 <mappers>
  <mapper resource="SqlMapper.xml"/>
 </mappers>
</configuration>

 

크게 보면 properties, environments, mappers 3부분으로 나눌수 있네요.

properties는 DB접속 속성정보등을 두는 곳이고

environments는 db접속정보

mappers는 실제sql 맵핑파일이 들어있는 곳입니다.

 

다음은 Sql 맵핑파일

SqlMapper.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">
<mapper namespace="sample1.FoodMapper">
 <select id="selectAllCount" resultType="int">
  select count(*) from foodslist
 </select>
 
 <select id="selectFood" parameterType="int" resultType="sample1.Food">
  select * from foodslist where id = #{id}
 </select>
</mapper>

보시는 것처럼 mapper 루트요소안에 select태그안에 쿼리가 들어있네요.

여기에 실제로 맵핑되는 것은 위의 mapper루트요소의 namespace속성에 있는 인터페이스 FoodMapper입니다.

 

FoodMapper.java

package sample1;

public interface FoodMapper {
 Food selectFood(int id);
 int selectAllCount();
}

보시는 것처럼 select태그와 여기interface의 메서드와 연결되어 있음을 알 수 있습니다.

 

그러면 최종적으로 샘플 프로그램입니다.

MyBatisSample.java

 

package sample1;

import java.io.Reader;

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 MyBatisSample {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  String resource = "Configuration.xml";
  Reader reader;
  SqlSession session = null;
  
  try {
   reader = Resources.getResourceAsReader(resource);
   SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
   
   Food food = null;
   session = sqlMapper.openSession();
   
   FoodMapper mapper = session.getMapper(FoodMapper.class);
   food = mapper.selectFood(1);
   
   System.out.println(food.getFoodname());
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (session != null) {
    session.close();
   }
  }
 }

}

스프링하고 좀 비슷한 면이 있네요.

하지만 스프링은 db뿐만 아니라 다른 곳에서도 쓸 수 있는데 ibatis/mybatis는 DB맵핑 전용프레임워크라고 보면 되겠습니다.

 

config.properties

 

driver=org.gjt.mm.mysql.Driver
url=jdbc:mysql:///foods?useUnicode=true&characterEncoding=euckr
username=midori
password=midori
 

'ibatis' 카테고리의 다른 글

ibatis simple select java bean class와 연동하기  (0) 2011.04.29
ibatis와 spring연동  (0) 2011.04.29
ibatis simple select  (0) 2011.04.29
Dao를 싱글턴 패턴으로 수정  (0) 2011.04.21
Dao작성  (0) 2011.04.21

+ Recent posts