일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TO_DATE
- html
- Oracle
- POI
- CSS
- javascript
- web.xml
- input
- eGovFramework
- 함수
- controller
- 개념
- 암호화
- sql
- eGov
- select
- array
- Database
- JVM
- 배열
- Java
- 오류
- spring
- Ajax
- 태그
- json
- mybatis
- 과정평가형
- was
- jQuery
- Today
- Total
web developer
[egov] EgovMap이란? EgovMap으로 데이터 가져오기 본문
EgovMap ?
1) 전자정부프레임워크에서 제공하는 제네릭 타입 (java의 Map클래스와 동일)
2) Map형태의 클래스로 iBatis(myBatis) parameterClass 또는 resultClass에서 사용할 수 있도록 제공되는 클래스
일반적인 resultClass와 차이점은 egovMap은 자동으로 컬럼을 맵핑할 수 있는 객체이름을 생성해 준다.
데이터베이스에서 SELECT user_id FROM user WHERE name="홍길동" 이라는 SQL문을 통해 유저의 아이디(user_id)를 사용하고자 할때, map.get("user_id")와 같이 column명으로 참조를 하게 되는데 egovMap을 사용하면 camelcase의 규칙에 따른 이름으로 객체를 참조할 수 있다.
즉, 컬럼 명이 user_id 라면 userId로 참조, 컬럼 명이 userId라면 userid로 참조하게 된다. 컬럼명의 _다음 알파벳은 대문자로 인식하며 컬럼명에서 대문자는 그대로 소문자 변수로 맵핑된다.
Controller.java
package egovframework.board.web;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EgovBoardController {
@Resource
private BoardService boardService;
@RequestMapping(value="/SelectBoardList.do")
public String boardList() throws Exception {
List<EgovMap> List = boardService.SelectBoardList();
return list;
}
}
컨트롤러에서 서비스에 접근하기 위해 서비스의 메서드명을 작성하여야 합니다.
여기서의 메서드는 Service Interface에 명시될 메서드를 의미하며, 메서드명의 명명규칙은 통상적으로 select+조회할대상+service+List로 작성합니다.
여기서는 단순조회를 하는것이므로 select를 사용하고, Service는 서비스로 접근하기 때문에, List는 List형식으로 받을것이기 때문입니다.
BoardService.java
package egovframework.dataReqRes.service;
import java.util.List;
import egovframework.board.menu.vo.ParamVO;
import egovframework.rte.psl.dataaccess.util.EgovMap;
public interface BoardService {
List<EgovMap> SelectBoardList(ParamVO pVO) throws Exception;
}
Interface 파일에는 예외처리 구문인 throws Exception가 자동 생성되지 않기 때문에 아래 소스와 같이 추가합니다.
BoardServiceImpl.java
package package egovframework.board.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import egovframework.board.menu.vo.ParamVO;
import egovframework.board.service.BoardService;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@Service("BoardService")
public class BoardServiceImpl implements BoardService{
@Resource(name="boardDAO")
private BoardDAO boardDAO;
@Override
public List<EgovMap> SelectBoardList(ParamVO pVO) throws Exception {
list<EgovMap> list = boardDAO.SelectBoardList(pVO);
return list;
}
}
ServiceImpl는 비즈니스 로직을 구현하는 파일이므로, 이 파일이 Service 파일임을 의미하는 @Service를 작성합니다.
또한, Service Interface에 명시된 추상 메서드를 구현하기 위해 ServiceInterface를 implements 받습니다.
ServiceImpl에서는 BoardDAO.SelectBoardList()를 호출합니다. 단순 조회여서 별다른 업무로직이 없이 DAO를 호출합니다.
DAO
package package egovframework.board.service.impl;
import java.util.List
import org.springframework.stereotype.Repository;
import egovframework.board.menu.vo.ParamVO;
import egovframework.rte.psl.dataaccess.util.EgovAbstractDAO;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@Repository("BoardDAO")
public class BoardDAO extends EgovAbstractDAO {
public List<EgovMap> selectSampleList(ParamVO pVO) throws Exception {
list<EgovMap> list = (List<EgovMap>)list("BoardSQL.SelectBoardList", pVO);
return list;
}
}
DAO는 Data Access Object의 약자로 데이터베이스에 접근하기 위한 역할을 수행합니다.
BoardDAO는 EgovAbstractDAO를 상속받았습니다. EgovAbstractDAO는 CRUD와 관련한 대표적인 method를 간단하게 호출할 수 있도록 제공합니다.
BoardSQL.xml
<?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="BoardSQL"
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="ParamVO" type="egovframework.board.menu.vo.ParamVO"/>
<select id="SelectBoardList" resultClass="egovMap" resultClass="ParamVO">
SELECT MNGNUM,
NAME,
AGE,
GENDER,
COUNTRY
FROM Exam_Board
</select>
</sqlMap>
* id 속성
- 작성된 쿼리를 식별하기 위한 이름 설정한다.
- 동일한 이름을 사용할 수 없다.
* parameterClass 속성
- 쿼리실행에 필요한 값을 포함하고 있는 클래스의 타입을 설정한다.
- 기본자료형, ValueObject, Map 타입을 설정할 수 있다.
* resultClass 속성
- 쿼리실행 후 조회된 값을 담는 클래스의 타입을 설정한다.
- SELECT 쿼리일때만 사용된다.
- 기본자료형, ValueObject, HashMap 타입을 설정할 수 있다.
- resultClass="egovMap"는 key값을 camelCase으로 바꿔줍니다.
* camelCase
- 시작은 소문자로 시작하며 단어변경 시 첫문자를 대문자로 표기하는 방법. _(언더바)는 삭제함.
- USE_YN -> useYn
* resultMap 속성
// 파일 내부에서 생성된 resultMap
<resultMap id="sample" class="board.sample.service.SampleVO">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="description" column="description"/>
<result property="useYn" column="use_yn"/>
<result property="regUser" column="reg_user"/>
</resultMap>
// resultMap을 참조
<select id="sampleDAO.selectSample" resultMap="sample">
<![CDATA[
SELECT
ID, NAME, DESCRIPTION, USE_YN, REG_USER
FROM SAMPLE
WHERE ID=#id#
]]>
</select>
출처 : https://javafactory.tistory.com/490?category=451240
'Framework > Egovframework [spring]' 카테고리의 다른 글
[egov] @Controller 메서드의 리턴타입 (0) | 2022.02.21 |
---|---|
[egov] egov mvc 폴더 기본구성 [myBatis] (0) | 2022.02.17 |
[egov] @RequestMapping 속성 (0) | 2022.02.08 |
[mybatis] <![CDATA[ '' ]]> 처리 / 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다. (0) | 2021.12.28 |
[egov] mybatis xml parameterType Class/TypeAlias 'vo' not found. (0) | 2021.12.17 |