IT'S DO
article thumbnail
728x90

# 오버로딩은 파라미터만 다른것
# 오버라이딩은 메소드 불러오는 것 재정의

 

 

1. SQL Query

CREATE TABLE DANDY_BOARD(
    BNO NUMBER NOT NULL,
    TITLE VARCHAR2(100)     NOT NULL,
    CONTENT VARCHAR2(2000)  NOT NULL,
    WRITER VARCHAR2(100)    NOT NULL,
    REGDATE DATE            DEFAULT SYSDATE,
    PRIMARY KEY(BNO)
);

 

CREATE SEQUENCE DANDY_BOARD_SEQ START WITH 1 INCREMENT BY 1;

 

INSERT INTO DANDY_BOARD(BNO, TITLE, CONTENT, WRITER) VALUES (DANDY_BOARD_SEQ.NEXTVAL, '제목입니다', '내용입니다', 'DANDY');

 

SELECT * FROM DANDY_BOARD;

 

COMMIT;

 

 

2. 

sr/cmain/resources/mappers/boardMapper.xml

 

<mapper namespace="boardMapper">
      <insert id="insert">
   INSERT INTO DANDY_BOARD(    BNO 
          , TITLE 
          , CONTENT 
          , WRITER  )
                 VALUES(    DANDY_BOARD_SEQ.NEXTVAL 
                    , #{title}
                    , #{content}
                    , #{writer}  )
   </insert>
</mapper>

 

3. 패키지 만들기

 

 

여기서 dandyapp안의 controller의 역할은 웹에서 처리해야할 데이터를 받고, 

이 데이터를 담당할 service를 선택하여 호출합니다.

그리고 처리한 데이터를 다음 페이지에서 볼 수 있게 셋팅하며 이동할 페이지를 리턴합니다.

service는 데이터를 dao를 통해 넘겨주거나 받으면서 비즈니스 로직을 수행하는 역할을 합니다.

dao는 DB를 통해 데이터를 조회하거나 수정 삭제 하는 역할을 합니다.

vo는 DB에 있는 테이블 컬럼 값을 java에서 객체로 다루기 위해 사용합니다.

 

# 추가 설명

DAO

  • DAO(Data Access Object) 는 데이터베이스의 data에 접근하기 위한 객체입니다. DataBase에 접근 하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용합니다.

 

# vo와 dto의 차이

DTO

  • DTO(Data Transfer Object) 는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)입니다.
  • 유저가 입력한 데이터를 DB에 넣는 과정을 보겠습니다.
    • 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송합니다.
    • 해당 DTO를 받은 서버가 DAO를 이용하여 데이터베이스로 데이터를 집어넣습니다.

VO

  • VO(Value Object) 값 오브젝트로써 값을 위해 쓰입니다. read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가집니다.
  • DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변할 수 있습니다.

 

4. 자바 만들기

 

만들기

소스 

package com.dandycompany.vo;

import java.util.Date;

public class boardVO {

private int bno;
private String title;
private String content;
private String writer;
private Date regdate;

}

 

5. 마우스 오른쪽 소스에서 get & set

 

 

6. 

 

7. DAO 인터페이스

 

 

package com.dandycompany.dao;

import com.dandycompany.vo.BoardVO;

public interface BoardDAO {

// 게시글 작성
public void write(BoardVO boardVO) throws Exception;
}

 

8. java

package com.dandycompany.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.dandycompany.vo.BoardVO;

@Repository
public class BoardDAOImpl implements BoardDAO {

@Inject
private SqlSession sqlSession;

// 게시글 작성
@Override
public void write(BoardVO boardVO) throws Exception {
sqlSession.insert("boardMapper.insert", boardVO);

}

}

 

9. service

package com.dandycompany.service;

import com.dandycompany.vo.BoardVO;

public interface BoardService {
// 게시글 작성
public void write(BoardVO boardVO) throws Exception;

}

 

package com.dandycompany.service;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.dandycompany.vo.BoardVO;
import com.dandycompany.dao.BoardDAO;

import javax.inject.Inject;


@Service
public class BoardServiceImpl implements BoardService {

@Inject
private BoardDAO dao;

// 게시글 작성
@Override
public void write(BoardVO boardVO) throws Exception {
dao.write(boardVO);
}

}

 

10. BoardController 만들기

 

 

소스

package com.dandycompany.dandyapp;

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.dandycompany.service.BoardService;
import com.dandycompany.vo.BoardVO;

@Controller
@RequestMapping("/board/*")
public class BoardController {

private static final Logger logger = LoggerFactory.getLogger(BoardController.class);

@Inject
BoardService service;

// 게시판 글 작성 화면
@RequestMapping(value = "/board/writeView", method = RequestMethod.GET)
public void writeView() throws Exception{
logger.info("writeView");

}

// 게시판 글 작성
@RequestMapping(value = "/board/write", method = RequestMethod.POST)
public String write(BoardVO boardVO) throws Exception{
logger.info("write");

service.write(boardVO);

return "redirect:/";
}

}

 

 

11. 스캔 할 수 있도록 root-context.xml파일에 코드를 추가

    <!-- scan -->
    <context:component-scan base-package="com.dandycompany.service"></context:component-scan>
    <context:component-scan base-package="com.dandycompany.dao"></context:component-scan>
    <context:component-scan base-package="com.dandycompany.vo"></context:component-scan>
  

 

간단한 에러

 

 

 

 

패키지 명에 따라감 맞게끔 바꿔주기

 

12.  view 생성

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
  <title>게시판</title>
</head>
<body>

<div id="root">
<header>
<h1> 게시판</h1>
</header>
<hr />
 
<nav>
  홈 - 글 작성
</nav>
<hr />

<section id="container">
<form role="form" method="post" action="/board/write">
<table>
<tbody>
<tr>
<td>
<label for="title">제목</label><input type="text" id="title" name="title" />
</td>
</tr>
<tr>
<td>
<label for="content">내용</label><textarea id="content" name="content" ></textarea>
</td>
</tr>
<tr>
<td>
<label for="writer">작성자</label><input type="text" id="writer" name="writer" />
</td>
<tr>
<td>
<button type="submit">작성</button>
</td>
</tr>
</tbody>
</table>
</form>
</section>
<hr />
</div>
</body>
</html>

 

13. 톰켓 실행

http://localhost:8081/board/writeView

 

내용 입력 후 작성 버튼을 누르면

redirect를 홈으로 보내기 때문에 아래와 같은 화면이 나옴.

 

14. 오라클에 저장 됐나 확인

값이 입력 되는 것을 확인 가능.

 

다 중요하지만 

중요하다고 생각하는 부분

sqlSession.insert("boardMapper.insert", boardVO);

로 인하여 연결됨.

profile

IT'S DO

@멋진놈

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!