(스프링) 전자정부프레임워크 DB연결(Postgresql) 후 데이터 조회
구동환경
- Windows 10
- eGovFrameWork 3.9
- Postgresql 13 (+ DBeaver)
- tomcat 8.5
- jDK 1.8
전자정부프레임워크와 java, Postgresql 등등을 설치했다는 가정하에 진행
프로젝트 우클릭 New -> eGovFrame Web Project
-
Project name, Group ID 작성 후 Next 버튼 클릭
-
에제 소스인 Generate Example 클릭 후 Finish 버튼 클릭
그렇게 몇 분 기다리고 나면
이런 거대한 프로젝트가 생긴다.
이걸 Tomcat 서버로 실행시키면
다음과 같은 예제 샘플을 확인할 수 있다.
이렇게 일단 뼈대는 구성해놨고, 먼저 DB에서 테이블과 임시데이터들을 만들어 준다.
나는 test_board라는 테이블을 만들었다.
create table test_board(
bno serial primary key,
name varchar(50) not null,
age integer not null,
content text not null,
regdate timestamp default now()
);
오라클보다 좋은 점은 따로 sequence를 만들 필요 없이 "serial"이라는 변수 명을 사용하면 자동으로 값이 1씩 증가한다.
다음으로 더미데이터를 집어넣는다.
insert into test_board(name, age, content) values ('김말자', 50, '김말자의 게시글');
insert into test_board(name, age, content) values ('이상길', 23, '이상길의 게시글');
insert into test_board(name, age, content) values ('최필순', 99, '최필순의 게시글');
insert into test_board(name, age, content) values ('김덕배', 35, '김덕배의 게시글');
insert into test_board(name, age, content) values ('김팔호', 40, '김팔호의 게시글');
insert into test_board(name, age, content) values ('손필정', 30, '손필정의 게시글');
commit;
select * from test_board
그러고 나서 조회 쿼리를 통해서 데이터가 잘 들어갔는지 확인한다.
잘 들어 간 것을 확인할 수 있다.
다음으로 해야할 것은 MVC 패턴에서 가장 중요한 특징인 Dependency이다.
(많은 dependency들이 있지만, 단순히 연결만 확인하므로 DB관련해서만 추가함.)
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
</dependency>
작성 후 maven -> update maven project
앞으로 새롭게 작성할 파일은 다음과 같다.
- BoardVO.java
- BoardService.java (Interface)
- BoardDAO.java
- BoardServiceImpl.java
- BoardController.java
- Board_SQL.xml
- boardList.jsp
BoardVO.java
(/src/main/java/egovframework/example/sample/service/BoardVO.java)
package egovframework.example.sample.service;
import java.util.Date;
public class BoardVO {
private int bno;
private String name;
private int age;
private String content;
private Date regdate;
public BoardVO() {
}
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
}
BoardService.java
(/src/main/java/egovframework/example/sample/service/BoardService.java)
package egovframework.example.sample.service;
import java.util.List;
public interface BoardService {
public List<?> SelectBoardList(BoardVO vo) throws Exception;
}
BoardDAO.java
(/src/main/java/egovframework/example/sample/service/impl/BoardDAO.java)
package egovframework.example.sample.service.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.example.sample.service.BoardVO;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
@Repository("BoardDAO")
public class BoardDAO extends EgovAbstractDAO{
public List<?> SelectBoardList(BoardVO vo) {
return (List<?>) list("boardDAO.SelectBoardList",vo);
}
}
BoardServiceImpl.java
(/src/main/java/egovframework/example/sample/service/impl/BoardServiceImpl.java)
package egovframework.example.sample.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.example.sample.service.BoardService;
import egovframework.example.sample.service.BoardVO;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
@Service("BoardService")
public class BoardServiceImpl extends EgovAbstractServiceImpl implements BoardService{
@Resource(name="BoardDAO")
private BoardDAO boardDAO;
@Override
public List<?> SelectBoardList(BoardVO vo) throws Exception {
return boardDAO.SelectBoardList(vo);
}
}
BoardController.java
(/src/main/java/egovframework/example/sample/web/BoardController.java)
package egovframework.example.sample.web;
import java.util.List;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import egovframework.example.sample.service.BoardService;
import egovframework.example.sample.service.BoardVO;
@Controller
public class BoardController {
private static Logger Logger = LoggerFactory.getLogger(BoardController.class);
@Resource(name="BoardService")
private BoardService boardService;
@RequestMapping(value="/boardList.do")
public String selectDeptList(BoardVO vo, Model model) throws Exception {
Logger.debug("deptList......sdfsdfsdfsdfsdfsdfiojwioerjsodijdfijsdio...........");
List<?> list = boardService.SelectBoardList(vo);
System.out.println(list);
model.addAttribute("list",list);
return "board/boardList";
}
}
Board_SQL.xml
(/src/main/resources/egovframework/sqlmap/example/sample/Board_SQL.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="BoardSpace">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="BoardVO" type="egovframework.example.sample.service.BoardVO"/>
<select id="boardDAO.SelectBoardList" resultClass="BoardVO">
select * from test_board
</select>
</sqlMap>
boardList.jsp
(/src/main/webapp/WEB-INF/jsp/egovframework/example/board/boardList.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>test_board Page</h3>
<div>
<table class="custom-table">
<thead>
<tr>
<th>순번</th>
<th>이름</th>
<th>나이</th>
<th>내용</th>
<th>작성일</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list }" var="list">
<tr>
<td><c:out value="${list.bno }" /></td>
<td><c:out value="${list.name }" /></td>
<td><c:out value="${list.age }" /></td>
<td><c:out value="${list.content }" /></td>
<td><c:out value="${list.regdate }" /></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
내용을 작성해주었다.
DB관련 설정을 거의 하지 않았기 때문에 이대로만 실행하면 당연히 에러난다.
이제 설정을 해보자.
context-common.xml
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" />
추가한다.
context-datasource.xml
<!-- PostgresSQL -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/본인계정db이름" />
<property name="username" value="본인계정ID"/>
<property name="password" value="본인계정PW"/>
</bean>
다른 DB관련 정보는 전부 주석처리 후 PostgresSQL만 작성한다.
sql-map-config.xml에서
<sqlMap resource="egovframework/sqlmap/example/sample/Board_SQL.xml"/>
을 추가한다.
sql-mapper-config.xml에서
<typeAlias alias="boardVO" type="egovframework.example.sample.service.BoardVO"/>
을 추가한다.
sql-map-config.xml과 sql-mapper-config.xml 서로 다름!
그리고 추가사항으로 자꾸 에러가 나서 project에서 Alt+Enter를 누르고
Deployment Assembly Source에서
/src/main/resources
를 추가하고 Deploy Path에서
WEB-INF/classes
로 수정한다.
그리고 마지막으로 index.jsp에서
<jsp:forward page="/boardList.do"/>
로 변경하고나서 tomcat을 실행시키면
이렇게 글을 불러올 수 있다.
마지막으로
-
질문은 받는데, 해결 못할 수도 있습니다.. ㅎㅎ
-
시간 날 때 소스파일 올리겠습니다.
-
자세한 설명은 다른 블로그에도 많아서 굳이 하지 않았습니다.
-
틀린 부분이나 부족한 부분은 댓글 남겨주시면 감사하겠습니다.
-
CRUD는 시간나면 올려보겠습니다.
이상 끝!
감사합니다!!😊✌
Author And Source
이 문제에 관하여((스프링) 전자정부프레임워크 DB연결(Postgresql) 후 데이터 조회), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seunghy/전자정부프레임워크-DB연결Postgresql저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)