4月15日
24264 ワード
きょう習った
掲示板の作成(1)
VO vs DTO
VO(Value Object)
データ自体が意味のあるものを含む対象です.
DTOと同じ概念または違いはRead-Only属性オブジェクトです.
VO:使用する値をオブジェクトとして表し、値を変更しない場合.
DTO(Data Transfer Object)
転送されたデータのコンテナ.
VOと同じデータストレージと使用部分に必要です.
DTOは、VOと比較して、他の層にデータを転送する動作を処理するオブジェクトである.
DTO:データの転送に使用されるオブジェクト、さらにはビジネスロジックも含まれます.
掲示板アイテムとDBの作成
作成
create table board(
bno int auto_increment primary key,
title varchar(150),
content varchar(2000),
writer varchar(50),
regdate timestamp default now(), # 입력값이 없으면 현재시간 입력
updatedate timestamp default now(), # 입력값이 없으면 현재시간 입력
);
ページとコントローラ
ページ
https://www.creative-tim.com/product/material-dashboard
せいぎょそうち
移動
package com.myapp.bbs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.myapp.bbs.model.BoardVO;
import com.myapp.bbs.service.BoardService;
import lombok.extern.java.Log;
@Controller
@RequestMapping("/board")
@Log // console의 Log 출력 (print out 대신 사용)
public class BoardController {
private BoardService boardService;
public BoardController(BoardService boardService) {
this.boardService = boardService;
}
@GetMapping("/list")
public String boardListGet() {
log.info("게시판 리스트 페이지 진입");
return "list";
}
@GetMapping("/enroll")
public String boardEnrollGet(Model model) {
log.info("게시판 등록 페이지 진입");
model.addAttribute("board", new BoardVO());
return "enroll";
}
@PostMapping("/enroll")
public String boardEnrollPost(BoardVO board, RedirectAttributes attr) {
boardService.enroll(board);
attr.addFlashAttribute("message", "게시글 등록 완료!");
return "redirect:/board/list"; // Post 다음 Redirect
}
}
package com.myapp.bbs.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.myapp.bbs.model.BoardVO;
@Mapper
public interface BoardMapper {
public void enroll(BoardVO board); // 게시판 글 등록
}
<?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">
<!-- com.myapp.bbs.dao 패키지 안의 BoardMapper.java를 여기서 입력하겠다는 설정 -->
<mapper namespace="com.myapp.bbs.dao.BoardMapper">
<!-- board 테이블에 데이터 넣기 -->
<insert id="enroll" parameterType="BoardVO">
<!-- application.properties에 설정을 하지 않았다면 resultType="com.myapp.bbs.model.BoardVO" 라고 적었야함 -->
insert into board(title, content, writer)
values (#{title}, #{content}, #{writer});
</insert>
</mapper>
package com.myapp.bbs.service;
import com.myapp.bbs.model.BoardVO;
public interface BoardService {
public void enroll(BoardVO board); // 게시판 글 등록
}
package com.myapp.bbs.service;
import org.springframework.stereotype.Service;
import com.myapp.bbs.dao.BoardMapper;
import com.myapp.bbs.model.BoardVO;
@Service
public class BoardServiceImpl implements BoardService {
private BoardMapper boardMapper;
public BoardServiceImpl(BoardMapper boardMapper) {
this.boardMapper = boardMapper;
}
@Override
public void enroll(BoardVO board) {
boardMapper.enroll(board);
}
}
ページをpackage com.myapp.bbs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping(value = {"/", "/dashboard"})
public String dashBoard() {
return "pages/dashboard";
}
@GetMapping("/tables")
public String showTable() {
return "pages/tables";
}
@GetMapping("/profile")
public String showProfile() {
return "pages/profile";
}
@GetMapping("/sign-in")
public String login() {
return "pages/sign-in";
}
@GetMapping("/sign-up")
public String register() {
return "pages/sign-up";
}
}
Reference
この問題について(4月15日), 我々は、より多くの情報をここで見つけました https://velog.io/@tutu10000/4월-15일テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol