Code Module

From JCFWiKi

Jump to: navigation, search

목차

[편집] 코드 테이블 생성

  • 코드의 아이디와 값 그리고 분류 카테고리를 가지는 간단한 코드 테이블을 생성한다.
  • HSQLDB 기준으로 생성함(오라클의 경우 int --> NUMBER로, VARCHAR는 VARCHAR2로 변경해 준다.)
CREATE TABLE CODE(
	id 		int,
	name		varchar(20),
	description varchar(50),
	category	varchar(20),
	CONSTRAINT code_pk PRIMARY KEY(id)
)
 
INSERT INTO CODE(id, name, description, category) VALUES(1, 'SEOUL', '서울','user_address_code');
INSERT INTO CODE(id, name, description, category) VALUES(2, 'INCHEN', '인천','user_address_code');
INSERT INTO CODE(id, name, description, category) VALUES(3, 'PUSAN', '부산','user_address_code');
INSERT INTO CODE(id, name, description, category) VALUES(4, 'ULSAN', '울산','user_address_code');

[편집] MODEL 작성

public class Code {
	private int id;
	private String category;
	private String name;
	private String description;
	
	public int getId() {return id;}
	public void setId(int id) {this.id = id;}
	public String getCategory() {return category;}
	public void setCategory(String category) {this.category = category;}
	public String getName() {return name;}
	public void setName(String name) {this.name = name;}
	public String getDescription() {return description;}
	public void setDescription(String description) {this.description = description;}	
}

[편집] SQL 작성

  • getCodes 문장만 작성한다.
  • resultMap은 선택적으로 사용한다.
<sqlMap namespace="code">			
	<typeAlias alias="code" type="edu.code.model.Code"/>
 
	<resultMap id="code-resultMap" class="code" >
		<result property="id" column="id"/>
		<result property="category" column="category"/>
    		<result property="name" column="name"/>
		<result property="description" column="description"/>
	</resultMap>
	
	<statement id="getCodes" parameterClass="string" resultMap="code-resultMap">
		SELECT id, category, name, description
		FROM CODE
		WHERE category = #category#
	</statement>
</sqlMap>
  • SQL CONFIG XML(sqlmap-config.xml) 파일에 정의를 추가한다.
<sqlMapConfig>
	<settings cacheModelsEnabled="true" />
 
	<sqlMap resource="sample/user/dao/sqlmap/User.xml" />
	<sqlMap resource="edu/code/dao/sqlmap/Code.xml" />
</sqlMapConfig>

[편집] DAO 작성

  • 카테고리를 파라미터로 받는 조회 메소드를 작성한다.
  • jcf.dao.ibatis.BaseSqlMapClientDAO를 상속 받도록 한다.
public class CodeDao extends BaseSqlMapClientDAO {
	public List getCodes(String category) {
		List codeList = executeQueryForList("getCodes", category);
		return codeList;
	}
}
  • 작성된 CodeDao 클래스를 Spring 빈으로 정의한다(applicationContext-code.xml)
  • CodeDao 클래스 정의에서는 상속 받은 BaseSqlMapClientDAO에서 필요로 하는 sqlMapClient를 프라퍼티로 가지도록 정의한다.
<beans ..>
	<bean id="codeDao" class="edu.code.dao.CodeDao">
		<property name="sqlMapClient" ref="sqlMapClient" />
	</bean>
</beans>

[편집] SERVICE 작성

  • 카테고리를 파라미터로 받는 서비스 조회 메소드를 작성한다.
  • CodeDao를 프라퍼티로 선언하고 setter 메소드를 작성한다.
public class CodeService {
	private CodeDao codeDao;
	
	public List getCodes(String category) {
		return codeDao.getCodes(category); 
	}
	
	/* getter & setter */
	public void setCodeDao(CodeDao codeDao) {this.codeDao = codeDao;}
}
  • 작성된 코드DAO 클래스를 Spring 빈으로 정의한다(applicationContext-code.xml)
  • 로직상에서 호출하는 CodeDao를 DI 프라퍼티로 정의한다.
<beans ..>
	<bean id="codeService" class="edu.code.service.CodeService">
		<property name="codeDao" ref="codeDao" />
	</bean>
	<bean id="codeDao" class="edu.code.dao.CodeDao">
		<property name="sqlMapClient" ref="sqlMapClient" />
	</bean>
</beans>