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 |