4月15日

24264 ワード

きょう習った

  • 掲示板の作成(1)
  • 掲示板の作成(1)


    VO vs DTO


    VO(Value Object)


  • データ自体が意味のあるものを含む対象です.

  • DTOと同じ概念または違いはRead-Only属性オブジェクトです.

  • VO:使用する値をオブジェクトとして表し、値を変更しない場合.
  • DTO(Data Transfer Object)


  • 転送されたデータのコンテナ.

  • VOと同じデータストレージと使用部分に必要です.

  • DTOは、VOと比較して、他の層にデータを転送する動作を処理するオブジェクトである.

  • DTO:データの転送に使用されるオブジェクト、さらにはビジネスロジックも含まれます.
  • 掲示板アイテムとDBの作成


    作成
  • 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(), # 입력값이 없으면 현재시간 입력
    );
  • プロジェクトライブラリを追加して作成
  • ページとコントローラ


    ページ

  • テンプレートのダウンロード(ブート5ベース)
    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
    	}
    }
  • Mapper
  • 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); // 게시판 글 등록
        
        }
  • Mapper.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">
    
    <!-- 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>
  • Service
  • package com.myapp.bbs.service;
    
    import com.myapp.bbs.model.BoardVO;
    
    public interface BoardService {
    
    	public void enroll(BoardVO board); // 게시판 글 등록
    }
  • Service implements
  • 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";
    	}	
    }