하루의 일상💜

[게시판만들기] 게시글목록 조회하기 본문

전자정부프레임워크

[게시판만들기] 게시글목록 조회하기

도하루박 2024. 2. 29. 14:51
반응형

1. 조회할 데이터를 db에 넣어준다.

테이블생성, insert를 통하여 데이터 넣기

CREATE TABLE `board` (
  `SEQ` int(10) NOT NULL AUTO_INCREMENT,
  `TITLE` varchar(100) DEFAULT NULL COMMENT '게시글 제목',
  `CONTENT` varchar(500) DEFAULT NULL COMMENT '게시글 내용',
  `REG_DATE` varchar(20) DEFAULT NULL COMMENT '등록일',
  `MOD_DATE` varchar(20) DEFAULT NULL COMMENT '수정일',
  PRIMARY KEY (`SEQ`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO haru.board
(TITLE, CONTENT, REG_DATE, MOD_DATE)
VALUES('제목1', '내용1', NOW(), NOW());

INSERT INTO haru.board
(TITLE, CONTENT, REG_DATE, MOD_DATE)
VALUES('제목2', '내용2', NOW(), NOW());

INSERT INTO haru.board
(TITLE, CONTENT, REG_DATE, MOD_DATE)
VALUES('제목3', '내용3', NOW(), NOW());

 

조회하면 아래와 같이 데이터가 들어간 것을 확인 할 수 있다.

select * from board;

 

 

 

 

2. 해당 경로에 SQL작성할 xml 생성

/haru/src/main/resources/sqlmap/mappers/BbsSQL.xml

BbsSQL.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="BbsDAO">

	<select id="selectBbsList" resultType="haru.com.bbs.service.BbsVO">
		SELECT * 
		FROM BOARD
	</select>
</mapper>

 

 

여기서 resultType을 vo가 있는 경로를 써줘야하는 번거로움을 줄일 수 있는 방법을 mybatis에서 지원하고 있다.

위에서 생성했던 sql-mapper-config에 vo 경로를 추가해줘서 alias만 사용할 수 있다.

sql-mapper-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
		<setting name="jdbcTypeForNull" value="VARCHAR"></setting>
	</settings>

<!--Mybatis 설정 -->	
    <typeAliases>
		<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap" />
		<typeAlias alias="bbsVO" type="haru.com.bbs.service.BbsVO"/>
    </typeAliases>
    
</configuration>
<select id="selectBbsList" resultType="bbsVO">
	SELECT * 
	FROM BOARD
</select>

 

 

 

3. vo, service, serviceimpl, controller 생성

패키지를 나눠서 아래처럼 생성하였다.

BbsVO
package haru.com.bbs.service;

public class BbsVO {
	
	private int seq;
	private String title;
	private String content;
	private String regDate;
	private String modDate;
	
	public int getSeq() {
		return seq;
	}
	public void setSeq(int seq) {
		this.seq = seq;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getRegDate() {
		return regDate;
	}
	public void setRegDate(String regDate) {
		this.regDate = regDate;
	}
	public String getModDate() {
		return modDate;
	}
	public void setModDate(String modDate) {
		this.modDate = modDate;
	}
	
}

 

 

BbsDAO
package haru.com.bbs.service.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import egovframework.rte.psl.dataaccess.EgovAbstractMapper;
import haru.com.bbs.service.BbsVO;

@Repository("bbsDAO")
public class BbsDAO extends EgovAbstractMapper {
	
	public List<?> selectList(BbsVO vo) throws Exception {
		return selectList("selectBbsList", vo);
	}
}

 

 

BbsService
package haru.com.bbs.service;

import java.util.List;

public interface BbsService {
	
	List<?> selectList(BbsVO vo) throws Exception;

}

 

 

BbsServiceImpl
package haru.com.bbs.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import haru.com.bbs.service.BbsService;
import haru.com.bbs.service.BbsVO;

@Service("bbsService")
public class BbsServiceImpl implements BbsService {
	
	@Resource(name = "bbsDAO")
	private BbsDAO bbsDAO;

	public List<?> selectList(BbsVO vo) throws Exception {
		return bbsDAO.selectList(vo);
	}

}

 

 

BbsController
package haru.com.bbs.web;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import haru.com.bbs.service.BbsService;
import haru.com.bbs.service.BbsVO;

@Controller
public class BbsController {
	
	@Resource(name = "bbsService")
    private BbsService bbsService;
	
	@RequestMapping(value = "/index.do")
	public String main() throws Exception {
		return "main";
	}
	
	@RequestMapping(value = "/bbsList.do")
	public String bbsList(BbsVO vo, Model model) throws Exception {
		
		List<?> bbsList = bbsService.selectList(vo);
		
		model.addAttribute("resultList", bbsList);
		return "/bbs/bbsList";
	}

}
return "/bbs/bbsList";

bbsList라는 jsp를 return 하겠다는 의미이다.

해당 경로에 불러와줄 jsp생성

 

 

4. jsp 설정

처음 <welcome-file-list> 설정해준 파일에 게시글 목록으로 이동할 수 있게 컨트롤러 url을 써준다.

main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>메인페이지</div>
<div>
<a href="/bbsList.do">게시글목록</a> 
</div>
</body>
</html>
bbsList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
	<caption>게시판테이블</caption>
	<thead>
		<tr>
			<th>번호</th>
			<th>제목</th>
			<th>내용</th>
			<th>등록일</th>
		</tr>
	</thead>
	<tbody>
		<c:forEach var="rs" items="${resultList}" varStatus="status">
		<tr>
			<td>${rs.seq}</td>
			<td>${rs.title}</td>
			<td>${rs.content}</td>
			<td>${rs.regDate}</td>
		</tr>
		</c:forEach>
	</tbody>
</table>
</body>
</html>

 

 

반응형