Egov - oracle 연동
1. dto / service / mapper 세팅

>>> 위와같은 구조로 패키지를 구성하였다
2. pom.xml에 오라클 의존성 추가
>>> egov에서는 기본적으로 hdsqldb를 사용하기 때문에 기본적으로 작성되어 있는 부분 주석처리 후 oracle 주석처리 제거

<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>6</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath>
</dependency>
</dependencies>
[출처] egovframework - oracle 연동|작성자 cubha
>>> 위와같은 구조로 변경 (*** 주석제거시 dependency에 오류가 발생하는데 version과 jar파일의 파일명을 위처럼 일치 시켜준 뒤 인터넷에 검색해서 jar 파일 다운받고 WEB-INF 하위 lib 폴더에 삽입 ***)

3. context-datasource 수정
>>> resources/egov/spring 하위의 context-datasource 파일 수정
>>> 사용할 db부분 제외하고 전부 삭제하고, 자신 db와 일치시켜준다.
▼ 기존

▼ 변경
<!-- oracle (POM에서 commons-dbcp, ojdbc(라이센스 사항으로 별도로 배포되지 않음) 관련 라이브러리 설정) -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="syinetesh"/>
<property name="password" value="syineteshpw"/>
</bean>
[출처] egovframework - oracle 연동|작성자 cubha
4. egov/sqlmap/oracle 하위에 있는 sql-mapper-config 수정 (확실하지않음)

>>> 기존에 작성되있는 부분을 본인의 vo 또는 dto 경로로 변경한다
▼ 기존

▼ 변경
<configuration>
<typeAliases>
<typeAlias alias="egovMap" type="org.egovframe.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="UserDTO" type="com.test.esh.dto.UserDTO"/>
<typeAlias alias="DeptDTO" type="com.test.esh.dto.DeptDTO"/>
<typeAlias alias="PositionDTO" type="com.test.esh.dto.PositionDTO"/>
<typeAlias alias="RankDTO" type="com.test.esh.dto.RankDTO"/>
</typeAliases>
</configuration>
[출처] egovframework - oracle 연동|작성자 cubha
5. 데이터 전송을 위한 mapper, service, vo(dto) 등을 작성
>>> getter, setter만 사용하기때문에 dto로 작성하였으며, serviceimpl의 필요성을 못느껴서 그냥 service만 작성하였다.
▼ controller
@Controller
@RequestMapping("/user")
public class UserController {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
// 사용자 목록 조회
@GetMapping("/userList.do")
public String getUserList(Model model) {
List<UserDTO> userList = userService.getUserList();
model.addAttribute("userList", userList);
System.out.println("**Controller!!");
log.info("userList : {}", userList);
return "user/userList";
}
[출처] egovframework - oracle 연동|작성자 cubha
▼ service
@Service("UserService")
public class UserService {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
private final UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
// 사용자 목록 조회
public List<UserDTO> getUserList(){
List<UserDTO> userList = userMapper.getUserList();
System.out.println("**Service!!");
log.info("userList : {}", userList);
return userList;
}
}
[출처] egovframework - oracle 연동|작성자 cubha
▼ mapper(.java)
@Mapper("UserMapper")
public interface UserMapper {
// 사용자 목록 조회
public List<UserDTO> getUserList();
}
[출처] egovframework - oracle 연동|작성자 cubha
▼ mapper(.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.esh.mapper.UserMapper">
<resultMap id="UserResultMap" type="UserDTO">
<result property="userId" column="USER_ID"/>
<result property="userPw" column="USER_PW"/>
<result property="userName" column="USER_NAME"/>
<result property="userDept" column="USER_DEPT"/>
<result property="userPosition" column="USER_POSITION"/>
<result property="userRank" column="USER_RANK"/>
<result property="userPhone" column="USER_PHONE"/>
<result property="userHomePhone" column="USER_HOME_PHONE"/>
<result property="userAddr" column="USER_ADDR"/>
<result property="userEmail" column="USER_EMAIL"/>
</resultMap>
<select id="getUserList" resultMap="UserResultMap">
SELECT
USER_DEPT,
USER_RANK,
USER_POSITION,
USER_NAME,
USER_EMAIL,
USER_PHONE
FROM TB_USER
</select>
</mapper>
[출처] egovframework - oracle 연동|작성자 cubha
6. 연결확인

>>> userList.do 경로로 가면 컨트롤러를 통해 log가 출력되는걸 확인할수있다!!!!
[출처] egovframework - oracle 연동|작성자 cubha