기존의 spring jdbc로 되어있던 것을 ibatis로 바꿔봤습니다.
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>
<select id="selectFoodList" resultType="sample1.Food">
select * from foodslist
</select>
<insert id="insertFood" parameterType="sample1.Food">
insert into
foodslist(foodname, maker, category, price)
values (#{foodname}, #{maker}, #{category}, #{price})
</insert>
<update id="updateFood" parameterType="sample1.Food">
update foodslist set
foodname=#{foodname}, maker=#{maker}, category=#{category}, price=#{price}
where id=#{id}
</update>
<delete id="deleteFood" parameterType="int">
delete from foodslist where id=#{id}
</delete>
</mapper>
FoodMapper.java
package sample1;
import java.util.List;
public interface FoodMapper {
Food selectFood(int id);
int selectAllCount();
List selectFoodList();
void insertFood(Food food);
void updateFood(Food food);
void deleteFood(int id);
}
TestDao3.java
package sample1;
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;
public class TestDao3 {
private SqlSessionFactory sqlSessionFactory;
public TestDao3() {
Reader reader;
try {
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 전체 음식목록 리턴
* @return 음식목록
*/
public List<Food> getFoodList() {
SqlSession session = null;
List<Food> foodList = null;
try {
session = sqlSessionFactory.openSession();
FoodMapper mapper = session.getMapper(FoodMapper.class);
foodList = mapper.selectFoodList();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
return foodList;
}
/**
* 음식목록을 콘솔에 출력
*/
public void viewFoodList() {
List<Food> list = getFoodList();
for (int i=0; i<list.size(); i++) {
Food food = (Food)list.get(i);
System.out.println(food.getId() + "," + food.getFoodname() + "," + food.getMaker() +
"," + food.getCategory() + "," + food.getPrice());
}
}
/**
* 음식이 존재하는지 체크
* @param foodId 음식id
* @return true: 존재, false: 존재하지 않음
*/
public boolean validateFood(int foodId) {
Food food = getFood(foodId);
if (food == null) {
return false;
}
return true;
}
/**
* 해당 id의 음식을 리턴
* @param foodId 음식id
* @return 특정id의 음식
*/
public Food getFood(int foodId) {
SqlSession session = null;
Food food = null;
try {
session = sqlSessionFactory.openSession();
FoodMapper mapper = session.getMapper(FoodMapper.class);
food = mapper.selectFood(foodId);
} catch(Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
return food;
}
/**
* FOODLIST테이블에 자료추가
* @param food 추가할 음식
*/
public void insert(Food food) {
SqlSession session = null;
try {
session = sqlSessionFactory.openSession();
FoodMapper mapper = session.getMapper(FoodMapper.class);
mapper.insertFood(food);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
/**
* FOODLIST테이블에 자료수정
* @param food 수정할 음식
*/
public void update(Food food) {
SqlSession session = null;
try {
session = sqlSessionFactory.openSession();
FoodMapper mapper = session.getMapper(FoodMapper.class);
mapper.updateFood(food);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
/**
* FOODLIST테이블에 자료삭제
* @param food 삭제할 음식
*/
public void delete(Food food) {
SqlSession session = null;
try {
session = sqlSessionFactory.openSession();
FoodMapper mapper = session.getMapper(FoodMapper.class);
mapper.deleteFood(food.getId());
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
}
메인샘플은 spring참조
단순히 스프링 관련 코드 지우고 아래처럼 TestDao2 ==> TestDao3로 바꿔주면 됩니다.
//TestDao2 foodDao = (TestDao2)factory.getBean("testDao2");
TestDao3 foodDao = new TestDao3();
이런것이 바로 객체재향 캡슐화의 장점이 아닐까요?
'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 |
| 첫째날 예제 (0) | 2011.04.20 |