http://blog.empas.com/ahnyounghoe/13205448
8. Spring기반 iBatis DAO 작성
Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 에서 생성했던 SqlMapArticleLinkDao 클래스가 SqlMapClientDaoSupport 클래스를 상속하도록 합니다. SqlMapClientDaoSupport 클래스는 Spring이 iBatis의 SqlMap을 활용하여 CRUD 작업을 쉽게 할 수 있게 해주는 클래스입니다.
package article.dao;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import article.domain.ArticleLink;
 
public class SqlMapArticleLinkDao extends SqlMapClientDaoSupport implements ArticleLinkDao {

 public List<ArticleLink> getDefaultList() {
  return null;
 }
}
 
이렇게 되면 dao-context.xml의 설정도 아래와 같이 변경해야 합니다.
 <bean id="articleLinkDao"
  class="article.dao.SqlMapArticleLinkDao">
  <property name="sqlMapClient" ref="sqlMapClient" />
 </bean>
 
그리고 나서 DAO 클래스의 메소드를 작성해보죠.
public class SqlMapArticleLinkDao extends SqlMapClientDaoSupport implements ArticleLinkDao {

 public List<ArticleLink> getDefaultList() {
  return getSqlMapClientTemplate().queryForList("selectDefaultList", null);
 }
}
 
getSqlMapClientTemplate() 메소드는 관용 표현으로 이해하면 됩니다. 템플릿 객체를 얻어서 queryForList 메소드를 호출합니다. 다수의 결과가 반환되는 경우 이 메소드가 쓰입니다. 첫번째 인자는 SqlMap 파일에 있는 Sql 문장의 id 이고, 두번째는 sql 문에 인자로 제공할 객체입니다. 현재는 기본 목록이기 때문에 인자는 필요없어 null을 입력하죠.
 
이제 SqlMap 파일인 ArticleLink.xml을 보겠습니다. 먼저 반복해서 기입해야 하는 클래스 이름을 짧게 쓰기 위해서 typeAlias를 정의했습니다. 그리고, 클래스와 테이블이 1:1로 대응되지 않는 경우 resultMap을 활용해서 해결합니다.
 
ArticleLink 객체의 프로퍼티 중에 UserInfo 객체가 있는데 DB는 객체 타입을 지원할 수 없습니다. 그래서, UserInfo의 id 속성과 select의 결과 문에서 USERINFO_REF값을 대응시키겠다고 정의한 것이죠.
<sqlMap namespace="ArticleLink">
 <typeAlias alias="articleLink" type="article.domain.ArticleLink" />
 <resultMap id="article" class="articleLink">
  <result property="id" column="ID" />
  <result property="language" column="LANG" />
  <result property="title" column="TITLE" />
  <result property="link" column="LINK" />
  <result property="regiDate" column="REGI_DATE" />
  <result property="description" column="DESC" />
  <result property="registrator.id" column="USERINFO_REF" />
 </resultMap>

 <!-- SELECT Statements -->
 <select id="selectDefaultList" resultMap="article">
  select ID, LANG, TITLE, LINK, REGI_DATE, DESC, USERINFO_REF
  FROM T_ARTICLE_LINK
 </select>
</sqlMap>
 
이제 화면 코딩을 제외하고는 간단한 목록보기가 구현된 것입니다.

번호 제목 글쓴이 날짜 조회 수
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 5083
84 @ConfigurationProperties 사용하기 황제낙엽 2025.10.23 1617
83 Spring Boot 에서 서버 로직의 역할별 애노테이션 구분 황제낙엽 2025.10.13 1411
82 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) file 황제낙엽 2023.12.23 2817
81 Spring Boot PetClinic Sample Application 황제낙엽 2023.12.21 2575
80 Eclipse, Spring Boot, Gradle, SVN 레거시(2019) 시스템 유지보수 환경 구축 file 황제낙엽 2023.11.14 1732
79 [시리즈 강좌] 스프링부트로 웹서비스 구축하기 황제낙엽 2023.07.13 1691
78 Spring Boot에서의 RESTful API 모듈 file 황제낙엽 2020.04.16 1896
77 [POST] Spring MVC 구조 분석 황제낙엽 2024.01.17 2053
76 Spring Framework 에서 사용하는 annotation 황제낙엽 2024.01.17 2093
75 Spring MVC configuration file 황제낙엽 2024.01.17 2041
74 [스프링 시큐리티 OAuth2] 강의 자료와 학습용 소스 file 황제낙엽 2024.01.15 1595
73 OAuth 2.0 Resource Server - Spring Security OAuth2.0 황제낙엽 2023.12.27 2016
72 Spring, JSP, Gradle, Eclipse 환경 구축[2] - 샘플 프로젝트 file 황제낙엽 2023.12.24 1922
71 Spring, JSP, Gradle, Eclipse 환경 구축[1] - 레퍼런스 조사 황제낙엽 2023.12.23 2056
70 spring-security-samples 황제낙엽 2023.12.22 1800
69 [Bard] Spring 과 Spring Boot의 차이 file 황제낙엽 2023.12.21 1803
68 Spring 과 Spring Boot의 차이 file 황제낙엽 2020.05.26 2308
67 Spring Security OAuth2.0 파헤치기 황제낙엽 2019.09.05 2079
66 Spring Security OAuth2구현 file 황제낙엽 2019.09.05 2208
65 Spring Security OAuth 황제낙엽 2019.09.05 2442