이제 db부분을 만들어봅시다.
Source Packages에서 New -> Java Packages해서 com.phpschool.guestbook.db를 추가합시다.
New -> Other해서 Java -> Java Interface를 선택하고 GuestbookDao라는 Interface를 추가합시다.








GuestbookDao.java
[code]package com.phpschool.guestbook.db;

import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;

public interface GuestbookDao {

    public List<GuestbookVo> getContents();
}[/code]

이 인터페이스를 구현해봅시다.
db Package에 New -> Java Class를 선택하고 GuestbookDaoImpl 클래스를 추가합시다.

GuestbookDaoImpl.java
[code]package com.phpschool.guestbook.db;

import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

public class GuestbookDaoImpl extends SqlMapClientDaoSupport
                 implements GuestbookDao {

    @SuppressWarnings("unchecked")
    @Override
    public List<GuestbookVo> getContents() {
        return (List<GuestbookVo>)
             getSqlMapClientTemplate().queryForList("getContents");
    }
}[/code]
우선 SqlMapClientDaoSupport클래스를 상속받습니다. 이게 sqlMapClient를 가져오게 하는 것 같습니다. getSqlMapClientTemplate()라는 메소드로 sqlMapClient를 가져오는군요. 이걸로 이제 queryForList메소드를 호출해서 getContents라는 sql을 실행합니다.
그럼 SQL작성을 하는 MYSQLGuestbook.xml파일을 생성해봅시다.
db Package에 new -> xml Document를 선택하고, MYSQLGuestbook.xml을 생성합시다.

MySQLGuestbook.xml
[code]<?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="Guestbook">
    <resultMap id="resultGuestbook" class="GuestbookVO">
        <result property="no" column="no" />
        <result property="name" column="name" />
        <result property="subject" column="subject" />
        <result property="content" column="content" />
        <result property="ip" column="ip" />
        <result property="datetime" column="datetime" />
    </resultMap>
   
    <select id="getContents" resultMap="resultGuestbook">
        SELECT no, name, subject, content, ip, datetime
        FROM guestbook ORDER BY no DESC
    </select>
</sqlMap>[/code]
iBATIS에서 사용하는 방식입니다. 우선 resultMap을 만드는데 db에 있는 column을 java에 있는 bean에 매핑하기 위해서 만듭니다. 아래는 getContents는 Dao에서 호출하는 이름과 같아야 합니다.

Dao를 만들었으니 Manager클래스를 만들어봅시다.
com.phpschool.guestbook.service 패키지를 만듭시다.
New -> Java Interface를 선택 후 GuestbookManager라는 interface를 만듭시다.

GuestbookManager.java
[code]package com.phpschool.guestbook.service;

import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;

public interface GuestbookManager {

    public List<GuestbookVo> getContents();
}
[/code]
getContents부분을 구현해봅시다.
New -> Java Class를 선택 후 GuestbookManagerImpl라는 class를 만듭시다.

GuestbookManagerImpl.java
[code]package com.phpschool.guestbook.service;

import com.phpschool.guestbook.db.GuestbookDao;
import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;

public class GuestbookManagerImpl implements GuestbookManager{

    GuestbookDao guestbookDao;

    public void setGuestbookDao(GuestbookDao guestbookDao) {
        this.guestbookDao = guestbookDao;
    }
   
    public List<GuestbookVo> getContents() {
        return guestbookDao.getContents();
    }
}[/code]
Dao인터페이스를 하나 선언해주고 setter를 만들어줍니다. 이게 스프링에서 말하는 DI입니다. 저기에 값을 셋팅하는 건 applicationContext.xml이 해줍니다.
그리고 getContents메소드는 특별한 로직이 없어서 그냥 Contents만 리턴합니다.

Controller는 다음시간에-_-;

 
Posted by 머드초보
,