✅ BoardMapper.xml에 update 작성
✅ BoardDAO.java에 Sqlsession과 파라미터를 이용해서 실제 DB와 연동
✅ BoardServiceImpl.java의 retrieve 오버라이드 부분에 조회수 증가 시키는 코드 작성
✅ retrieve.jsp 작성
💡 결과
retrieve.jsp
<%@page import="com.dto.BoardDTO"%>
<%@ 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>
<body>
<h2>게시판 자세히 보기</h2>
<%
//BoardRetrieveServlet에서
//request.setAttribute("boardRetrieve", dto) 값 얻기
BoardDTO dto = (BoardDTO) request.getAttribute("boardRetrieve");
int num = dto.getNum();
String title = dto.getTitle();
String author = dto.getAuthor();
String content = dto.getContent();
String writeday = dto.getWriteday();
int readcnt = dto.getReadcnt();
%>
<form action="" method="">
글번호:<%= num%><br>
작성일:<%= writeday%><br>
조회수:<%= readcnt%><br>
<%= title %>
제목:<input type="text" name="title" value="<%= title%>"><br>
작성자:<input type="text" name="author" value="<%= author%>"><br>
내용:<textarea rows="10" cols="10" name="content"><%= content%></textarea>
<input type="submit" value="수정">
</form>
<a href="list">목록</a>
</body>
</html>
BoardMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="BoardMapper">
<select id="list" resultType="BoardDTO">
select num, title, author, content, writeday, readcnt
from board
order by num desc
</select>
<insert id="write" parameterType="BoardDTO">
insert into board (num, title, author, content)
values (board_seq.nextval, #{title}, #{author}, #{content})
</insert>
<select id="retrieve" parameterType="int"
resultType="BoardDTO">
select num, title, author, content, writeday, readcnt
from board
where num = #{num}
</select>
<update id="readcnt" parameterType="int">
update board
set readcnt = readcnt + 1
where num = #{num}
</update>
</mapper>
BoardDAO.java
package com.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.dto.BoardDTO;
public class BoardDAO {
// 전체 목록
public List<BoardDTO> list(SqlSession session){
List<BoardDTO> list = session.selectList("BoardMapper.list");
return list;
}
// 글 저장
public int write(SqlSession session, BoardDTO dto) {
int n = session.insert("BoardMapper.write", dto);
return n;
}
// 글 자세히 보기
public BoardDTO retrieve(SqlSession session, int num) {
BoardDTO dto = session.selectOne("BoardMapper.retrieve", num);
return dto;
}
// 조회수 증가
public int readcnt (SqlSession session, int num) {
int n = session.update("BoardMapper.readcnt", num);
return n;
}
}
BoardServiceImpl.java
package com.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.config.MySqlSessionFactory;
import com.dao.BoardDAO;
import com.dto.BoardDTO;
public class BoardServiceImpl implements BoardService {
@Override
public List<BoardDTO> list() {
List<BoardDTO> list = null; //return 하기 위해 밖에서 선언
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
list = dao.list(session);
}finally {
session.close();
}
return list;
}
@Override
public int write(BoardDTO dto) {
int n = 0;
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
n = dao.write(session, dto);
session.commit(); //mybatis는 자동커밋이 아니기 때문에 반드시 커밋
}finally {
session.close();
}
return n;
}
@Override
public BoardDTO retrieve(int num) {
BoardDTO dto = null;
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
//조회수 증가
int n = dao.readcnt(session, num);
session.commit();
//자세히 보기
dto = dao.retrieve(session, num);
}finally {
session.close();
}
return dto;
}
}
'Programming Language > JSP' 카테고리의 다른 글
게시판 구축 프로젝트(6) - 삭제하기 (0) | 2023.08.18 |
---|---|
게시판 구축 프로젝트(5) - 수정하기 (0) | 2023.08.18 |
게시판 구축 프로젝트(3) - 글 자세히 보기 (0) | 2023.08.18 |
게시판 구축 프로젝트(2) - 글쓰기 (0) | 2023.08.18 |
게시판 구축 프로젝트 (0) | 2023.08.17 |
✅ BoardMapper.xml에 update 작성
✅ BoardDAO.java에 Sqlsession과 파라미터를 이용해서 실제 DB와 연동
✅ BoardServiceImpl.java의 retrieve 오버라이드 부분에 조회수 증가 시키는 코드 작성
✅ retrieve.jsp 작성
💡 결과
retrieve.jsp
<%@page import="com.dto.BoardDTO"%>
<%@ 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>
<body>
<h2>게시판 자세히 보기</h2>
<%
//BoardRetrieveServlet에서
//request.setAttribute("boardRetrieve", dto) 값 얻기
BoardDTO dto = (BoardDTO) request.getAttribute("boardRetrieve");
int num = dto.getNum();
String title = dto.getTitle();
String author = dto.getAuthor();
String content = dto.getContent();
String writeday = dto.getWriteday();
int readcnt = dto.getReadcnt();
%>
<form action="" method="">
글번호:<%= num%><br>
작성일:<%= writeday%><br>
조회수:<%= readcnt%><br>
<%= title %>
제목:<input type="text" name="title" value="<%= title%>"><br>
작성자:<input type="text" name="author" value="<%= author%>"><br>
내용:<textarea rows="10" cols="10" name="content"><%= content%></textarea>
<input type="submit" value="수정">
</form>
<a href="list">목록</a>
</body>
</html>
BoardMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="BoardMapper">
<select id="list" resultType="BoardDTO">
select num, title, author, content, writeday, readcnt
from board
order by num desc
</select>
<insert id="write" parameterType="BoardDTO">
insert into board (num, title, author, content)
values (board_seq.nextval, #{title}, #{author}, #{content})
</insert>
<select id="retrieve" parameterType="int"
resultType="BoardDTO">
select num, title, author, content, writeday, readcnt
from board
where num = #{num}
</select>
<update id="readcnt" parameterType="int">
update board
set readcnt = readcnt + 1
where num = #{num}
</update>
</mapper>
BoardDAO.java
package com.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.dto.BoardDTO;
public class BoardDAO {
// 전체 목록
public List<BoardDTO> list(SqlSession session){
List<BoardDTO> list = session.selectList("BoardMapper.list");
return list;
}
// 글 저장
public int write(SqlSession session, BoardDTO dto) {
int n = session.insert("BoardMapper.write", dto);
return n;
}
// 글 자세히 보기
public BoardDTO retrieve(SqlSession session, int num) {
BoardDTO dto = session.selectOne("BoardMapper.retrieve", num);
return dto;
}
// 조회수 증가
public int readcnt (SqlSession session, int num) {
int n = session.update("BoardMapper.readcnt", num);
return n;
}
}
BoardServiceImpl.java
package com.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.config.MySqlSessionFactory;
import com.dao.BoardDAO;
import com.dto.BoardDTO;
public class BoardServiceImpl implements BoardService {
@Override
public List<BoardDTO> list() {
List<BoardDTO> list = null; //return 하기 위해 밖에서 선언
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
list = dao.list(session);
}finally {
session.close();
}
return list;
}
@Override
public int write(BoardDTO dto) {
int n = 0;
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
n = dao.write(session, dto);
session.commit(); //mybatis는 자동커밋이 아니기 때문에 반드시 커밋
}finally {
session.close();
}
return n;
}
@Override
public BoardDTO retrieve(int num) {
BoardDTO dto = null;
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
//조회수 증가
int n = dao.readcnt(session, num);
session.commit();
//자세히 보기
dto = dao.retrieve(session, num);
}finally {
session.close();
}
return dto;
}
}
'Programming Language > JSP' 카테고리의 다른 글
게시판 구축 프로젝트(6) - 삭제하기 (0) | 2023.08.18 |
---|---|
게시판 구축 프로젝트(5) - 수정하기 (0) | 2023.08.18 |
게시판 구축 프로젝트(3) - 글 자세히 보기 (0) | 2023.08.18 |
게시판 구축 프로젝트(2) - 글쓰기 (0) | 2023.08.18 |
게시판 구축 프로젝트 (0) | 2023.08.17 |