기존의 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

+ Recent posts