이제 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는 다음시간에-_-;