본문 바로가기

웹 개발/JSP

[Web_JSP] 22

실습(MVC(board))

- [Web_JSP] 21 이어서

 

 

1. dBeaver에서 테이블 생성

create table tbl_reply(
	reply_number int unsigned auto_increment primary key,
	reply_content varchar(700),
	board_number int unsigned,
	member_number int unsigned,
	foreign key (board_number) references tbl_board(board_number) on delete cascade,
	foreign key (member_number) references tbl_member(member_number) on delete cascade
);

select * from tbl_reply;

 

 

 

2. ReplyVO.java

package com.board.app.domain.vo;

public class ReplyVO {
	
	private int replyNumber;
	private String replyContent;
	private int boardNumber;
	private int memberNumber;
	
	public ReplyVO() {;}

	public int getReplyNumber() {
		return replyNumber;
	}

	public void setReplyNumber(int replyNumber) {
		this.replyNumber = replyNumber;
	}
 
	public String getReplyContent() {
		return replyContent;
	}

	public void setReplyContent(String replyContent) {
		this.replyContent = replyContent;
	}

	public int getBoardNumber() {
		return boardNumber;
	}

	public void setBoardNumber(int boardNumber) {
		this.boardNumber = boardNumber;
	}

	public int getMemberNumber() {
		return memberNumber;
	}

	public void setMemberNumber(int memberNumber) {
		this.memberNumber = memberNumber;
	}
}

 

 

 

3. ReplyDTO.java

package com.board.app.domain.vo;

public class ReplyDTO {
	
	private int replyNumber;
	private String replyContent;
	private int boardNumber;
	private int memberNumber;
	private String memberId;
	
	public ReplyDTO() {;} 

	public int getReplyNumber() {
		return replyNumber;
	}

	public void setReplyNumber(int replyNumber) {
		this.replyNumber = replyNumber;
	}

	public String getReplyContent() {
		return replyContent;
	}

	public void setReplyContent(String replyContent) {
		this.replyContent = replyContent;
	}

	public int getBoardNumber() {
		return boardNumber;
	}

	public void setBoardNumber(int boardNumber) {
		this.boardNumber = boardNumber;
	}

	public int getMemberNumber() {
		return memberNumber;
	}

	public void setMemberNumber(int memberNumber) {
		this.memberNumber = memberNumber;
	}

	public String getMemberId() {
		return memberId;
	}

	public void setMemberId(String memberId) {
		this.memberId = memberId;
	}
}

 

 

 

4. ReplyMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http//mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Reply">
	<!-- 댓글 목록 -->
	<select id="select" parameterType="_int" resultType="replyDTO">
		select reply_number, reply_content, member_id, board_number, r.member_number
		from tbl_reply r join tbl_member m
		on r.member_number = m.member_number and board_number = #{boardNumber}
		order by 1 desc
	</select>
	
	<!-- 댓글 등록 -->
	<insert id="insert" parameterType="replyVO">
		insert into tbl_reply (reply_content, board_number, member_number)
		values(#{replyContent}, #{boardNumber}, #{memberNumber})
	</insert>
	
	<!-- 댓글 삭제 -->
	<delete id="delete" parameterType="_int">
		delete from tbl_reply where reply_number = #{replyNumber}
	</delete>
	
	<!-- 댓글 수정 -->
	<update id="update" parameterType="replyVO">
		update tbl_reply
		set reply_content = #{replyContent}
		where reply_number = #{replyNumber}
	</update>
</mapper>

 

 

 

5. config.xml

<?xml version="1.0" encoding="UTF-8"?>
http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
	 
	<typeAliases>
		<typeAlias type="com.board.app.domain.vo.MemberVO" alias="memberVO"/>
		<typeAlias type="com.board.app.domain.vo.FileVO" alias="fileVO"/>
		<typeAlias type="com.board.app.domain.vo.BoardVO" alias="boardVO"/>
		<typeAlias type="com.board.app.domain.vo.ReplyVO" alias="replyVO"/>
		<typeAlias type="com.board.app.domain.vo.ReplyDTO" alias="replyDTO"/>
		<typeAlias type="com.board.app.domain.vo.BoardDTO" alias="boardDTO"/>
	</typeAliases>

	<environments default="mysql">
		<environment id="mysql">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/board"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/mybatis/mapper/MemberMapper.xml"/>
		<mapper resource="com/mybatis/mapper/BoardMapper.xml"/>
		<mapper resource="com/mybatis/mapper/FileMapper.xml"/>
		<mapper resource="com/mybatis/mapper/ReplyMapper.xml"/>
	</mappers>
	
</configuration>

 

 

 

6. ReplyDAO.java

package com.board.app.domain.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.board.app.domain.vo.ReplyDTO;
import com.board.app.domain.vo.ReplyVO;
import com.mybatis.config.MyBatisConfig;

public class ReplyDAO { 
	SqlSessionFactory sqlSessionFactory = MyBatisConfig.getSqlSessionFactory();
	SqlSession sqlSession;
	
	public ReplyDAO() {
		sqlSession = sqlSessionFactory.openSession(true);
	}

	public List<ReplyDTO> getList(int boardNumber) {
		return sqlSession.selectList("Reply.select", boardNumber);
	} 
	
	public void insert(ReplyVO replyVO) {
		sqlSession.insert("Reply.insert", replyVO);
	}
	
	public void delete(int replyNumber) {
		sqlSession.delete("Reply.delete", replyNumber);
	}
	public void update(ReplyVO replyVO) {
		sqlSession.update("Reply.update", replyVO);
	}
	
}

 

 

 

7. ReplyListOk.java

package com.board.app.reply;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject; 

import com.board.app.action.Action;
import com.board.app.action.ActionInfo;
import com.board.app.domain.dao.ReplyDAO;
import com.board.app.domain.vo.ReplyDTO;
import com.board.app.domain.vo.ReplyVO;

public class ReplyListOk implements Action {

	@Override
	public ActionInfo execute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		
		PrintWriter out = resp.getWriter();
		
		ReplyDAO replyDAO = new ReplyDAO();
		JSONArray replyJSONs = new JSONArray();
		
		int boardNumber = Integer.parseInt(req.getParameter("boardNumber"));
		List<ReplyDTO> replies = replyDAO.getList(boardNumber);
		
		replies.forEach(reply -> {
			JSONObject replyJSON = new JSONObject();
			replyJSON.put("replyNumber", reply.getReplyNumber());
			replyJSON.put("boardNumber", reply.getBoardNumber());
			replyJSON.put("memberNumber", reply.getMemberNumber());
			replyJSON.put("memberId", reply.getMemberId());
			replyJSON.put("replyContent", reply.getReplyContent());
			
			replyJSONs.add(replyJSON);
		});
		
		out.print(replyJSONs.toJSONString());
		out.close();
		return null;
	}

}

 

 

'웹 개발 > JSP' 카테고리의 다른 글

[Web_JSP] 24  (0) 2022.06.12
[Web_JSP] 23  (0) 2022.06.11
[Web_JSP] 21  (0) 2022.06.09
[Web_JSP] 20  (0) 2022.06.08
[Web_JSP] 19  (0) 2022.06.07