반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 이클립스데이터베이스연결
- double-submit
- 한글깨짐해결방법
- 게시판insert
- 톰캣시작페이지설정
- 게시판만들기
- insert할글깨짐
- 이클립스db연결
- insert 중복방지
- 스프링게시판만들기
- Java
- 톰캣9.0다운로드
- 저장할때한글깨짐
- 자바스크립트
- mybatis연결
- dataSource설정
- 스프링게시판목록조회
- 게시판목록조회
- 스프링게시판insert
- Could not create the java Virtual Machine
- mysqlinsert한글깨짐
- 컨트롤러url
- 게시판상세보기
- 전자정부프레임워크 double-submit
- url설정
- HTML
- 스프링게시판상세보기
- 스프링게시판등록
- oracle
- 스프링프로젝트
Archives
- Today
- Total
하루의 일상💜
[Spring] #1. 게시판 만들기 _ DB 테이블 VO로 만들고 Mapper에서 DB로 insert 하기 (추가, 수정, 조회, 전체조회) 본문
SpringBoot
[Spring] #1. 게시판 만들기 _ DB 테이블 VO로 만들고 Mapper에서 DB로 insert 하기 (추가, 수정, 조회, 전체조회)
도하루박 2022. 11. 18. 20:02반응형
oracle에 게시판 테이블 생성
게시판을 만들기 위해서 먼저 oracle에서 table을 만든다음 진행을 하도록 한다.
CREATE SEQUENCE SEQ_BOARD;
CREATE TABLE TBL_BOARD(
BOARD_NUMBER NUMBER CONSTRAINT PK_BOARD PRIMARY KEY,
BOARD_TITLE VARCHAR2(500),
BOARD_WRITER VARCHAR2(500),
BOARD_CONTENT VARCHAR2(500),
BOARD_REGISTER_DATE DATE DEFAULT SYSDATE,
BOARD_UPDATE_DATE DATE DEFAULT SYSDATE
);
만들어진 테이블을 VO로 담아 getter, setter, toString 생성
//아래는 Lombok을 사용하여 getter, setter, toString 자동생성됨
src > main > java > domain.vo > BoardVO 경로 안에 VO를 생성해준다.
package com.example.app.domain.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@Data
@NoArgsConstructor
public class BoardVO {
private Long boardNumber;
private String boardTitle;
private String boardWriter;
private String boardContent;
private String boardRegisterDate;
private String boardUpdateDate;
public void create(String boardTitle, String boardWriter, String boardContent) {
this.boardTitle = boardTitle;
this.boardWriter = boardWriter;
this.boardContent = boardContent;
}
}
boardMapper.java 설정
사용해야할 BoardMapper.xml 에서 사용해야하는 boardVO 인터페이스가 필요하므로
main > java > mapper 경로 안에 BoardMapper.java 인터페이스를 설정해준다.
package com.example.app.mapper;
import com.example.app.domain.vo.BoardVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface BoardMapper {
// 추가
public void insert(BoardVO boardVO);
// 수정
public void update(BoardVO boardVO);
// 삭제
public void delete(Long boardNumber);
// 조회
public BoardVO select(Long boardNumber);
// 조회는 하나만 리턴을 할 것이기 때문에 BoardVO 타입으로 받아 올 것이고, 외부에서 당연히 키값을 받아야 하나를 조회할 수 있으니까
// boardNumber를 받는 것이다.
// 전체 조회
public List<BoardVO> selectAll();
// 전체조회로 BoardVO가 여러개이니까 List 타입으로 받아온다.
}
boardMapper.xml 설
<mapper namespace="com.example.app.mapper.BoardMapper">
</mapper>
namespace 경로에 유의하여 생성한다.
게시판 추가
BoardMapper.xml 에 추가된 내용
MyBatis 환경 문법으로 작성하였다.
//추가
<insert id="insert">
INSERT INTO TBL_BOARD(BOARD_NUMBER, BOARD_TITLE, BOARD_WRITER, BOARD_CONTENT)
VALUES(SEQ_BOARD.NEXTVAL, #{boardTitle}, #{boardWriter}, #{boardContent})
</insert>
//수정
<update id="update">
UPDATE TBL_BOARD
SET BOARD_TITLE = #{boardTitle}, BOARD_CONTENT = #{boardContent}, BOARD_UPDATE_DATE = SYSDATE
WHERE BOARD_NUMBER = #{boardNumber}
</update>
//삭제
<delete id="delete">
DELETE FROM TBL_BOARD
WHERE BOARD_NUMBER = #{boardNumber}
</delete>
//조회
<select id="select" resultType="boardVO">
SELECT BOARD_NUMBER, BOARD_TITLE, BOARD_WRITER, BOARD_CONTENT, BOARD_REGISTER_DATE, BOARD_UPDATE_DATE
FROM TBL_BOARD
WHERE BOARD_NUMBER = #{boardNumber}
</select>
//전체조회
<select id="selectAll" resultType="boardVO">
SELECT BOARD_NUMBER, BOARD_TITLE, BOARD_WRITER, BOARD_CONTENT, BOARD_REGISTER_DATE, BOARD_UPDATE_DATE
FROM TBL_BOARD
</select>
위의 쿼리중 select는 resultType를 vo로 설정해줬음으로
resources > config > config.xml 경로에 Alias를 설정해준다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.example.app.domain.vo.BoardVO" alias="boardVO"/>
</typeAliases>
</configuration>
test > java > mapper 경로에서 insert 쿼리 테스트롤 돌려보고 DB에 적용이 되는지 확인한다.
package com.example.app.mapper;
import com.example.app.domain.vo.BoardVO;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@Slf4j
public class BoardMapperTest {
@Autowired
private BoardMapper boardMapper;
// 추가
@Test
public void insertTest(){
BoardVO boardVO = new BoardVO();
boardVO.create("테스트 게시글 제목", "홍길동", "테스트 게시글 내용");
boardMapper.insert(boardVO);
}
// 수정
@Test
public void updateTest(){
BoardVO boardVO = boardMapper.select(1L);
boardVO.setBoardTitle("수정된 게시글 제목");
boardMapper.update(boardVO);
}
// 조회
@Test
public void selectTest(){
log.info("board: " + boardMapper.select(1L));
}
// 전체조회
@Test
public void selectAllTest(){
boardMapper.selectAll().stream().map(BoardVO::getBoardTitle).forEach(log::info);
}
}
반응형
'SpringBoot' 카테고리의 다른 글
[Spring] #6. 게시판만들기_첨부파일 업로드/수정/삭제 (0) | 2022.12.29 |
---|---|
[Spring] #5. 게시판 만들기 _ 페이징처리 (0) | 2022.12.12 |
[Spring] #4. 게시판만들기 _ 입력받은 데이터를 화면에 보이기 (1) | 2022.11.24 |
[Spring] #3. 게시판 만들기 _ Controller (0) | 2022.11.23 |
[Spring] #2. 게시판 만들기 _ DAO, Service 생성 (0) | 2022.11.18 |