1. board 테이블 생성
- TBL_BOARD
- SEQ_BOARD
CREATE TABLE tbl_borad
(
bno INT(10),
title VARCHAR(100),
content VARCHAR(2000),
writer VARCHAR(100),
regdate DATE DEFAULT SYSDATE(),
updatedate DATE DEFAULT SYSDATE()
);
nocahce : 노 캐쉬로 만든다
CREATE sequence seq_board nocache;
데이터 집어넣기
INSERT INTO tbl_board
( bno, title, content, writer )
VALUES
( nextval(seq_board),tbl_board "테스트1", "내용1", "저자1");

2. BoardVO 생성
게시글 추가 방법
- src/main/java -> com.koreait.board.bean 에 boardVO 클래스 생성
package com.koreait.board.bean;
import lombok.Data;
@Data
public class boardVO {
private Long bno;
private String title;
private String content;
private String writer;
private String regdate;
private String updatedate;
}
- src/main/java -> com.koreait.board.mapper 에 BoardMapper.java 인터페이스 생성
package com.koreait.board.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.koreait.board.bean.BoardVO;
@Mapper
public interface BoardMapper {
//게시글 추가
public int insert(BoardVO vo);
}
- src/main/resources -> mapper 에 TimeMapper.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">
<!-- 연결할 인터페이스 정보를 namespace에 기술 -->
<mapper namespace="com.koreait.board.mapper.BoardMapper">
<insert id="insert">
INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES(NEXTVAL(SEQ_BOARD), #{title}, #{content}, #{writer})
</insert>
</mapper>
- src/test/java -> com.koreait.board.mapper 에 BoardMapperTest.java 생성
package com.koreait.board.mapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.koreait.board.bean.BoardVO;
import com.koreait.board.util.MyUtil;
import lombok.extern.slf4j.Slf4j;
@SpringBootTest
@Slf4j
public class BoardMapperTest {
@Autowired
private BoardMapper mapper;
@Test
public void insertTest() {
BoardVO vo = new BoardVO();
vo.setTitle("자동제목");
vo.setContent("테스트");
vo.setWriter("테스터");
if(mapper.insert(vo) == 1) {
log.info(MyUtil.BLUE + "Insert 성공" + MyUtil.END);
}
else {
log.info(MyUtil.BLUE + "Insert 실패" + MyUtil.END);
}
}
}


for(int i=0;i<15;i++) {
vo = new BoardVO();
vo.setTitle("테스트" + i);
vo.setContent("내용" + i );
vo.setWriter("나");
mapper.insert(vo);
}

인터페이스 BoardMapper.java
package com.koreait.board.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.koreait.board.bean.BoardVO;
@Mapper
public interface BoardMapper {
//게시글 추가
public int insert(BoardVO vo);
public int insertSelectKey(BoardVO vo); //bno 채번 결과를 vo에 담음
}
BoardMapper.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">
<!-- 연결할 인터페이스 정보를 namespace에 기술 -->
<mapper namespace="com.koreait.board.mapper.BoardMapper">
<insert id="insertSelectKey">
<selectKey keyProperty="bno" order="BEFORE" resultType="long">
SELECT NEXTVAL(SEQ_BOARD) FROM DUAL
</selectKey>
INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES(#{bno}, #{title}, #{content}, #{writer})
</insert>
</mapper>
BoardMapperTest.java
package com.koreait.board.mapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.koreait.board.bean.BoardVO;
import com.koreait.board.util.MyUtil;
import lombok.extern.slf4j.Slf4j;
@SpringBootTest
@Slf4j
public class BoardMapperTest {
@Autowired
private BoardMapper mapper;
@Test
public void insertTest() {
BoardVO vo = new BoardVO();
vo.setTitle("자동제목");
vo.setContent("테스트");
vo.setWriter("테스터");
log.info("BoardVO = " + vo);
if(mapper.insertSelectKey(vo) == 1) {
log.info(MyUtil.BLUE + "Insert 성공" + MyUtil.END);
}
else {
log.info(MyUtil.BLUE + "Insert 실패" + MyUtil.END);
}
log.info("BoardVO = " + vo);
for(int i=0;i<15;i++) {
vo = new BoardVO();
vo.setTitle("테스트" + i);
vo.setContent("내용" + i );
vo.setWriter("나");
mapper.insert(vo);
}
}
}


게시글 리스트 추가법
인터페이스 BoardMapper.java
package com.koreait.board.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.koreait.board.bean.BoardVO;
@Mapper
public interface BoardMapper {
//게시글 리스트
public List<BoardVO> getList();
}
BoardMapper.xml
![CDATA[]]> : [ ] 안에 있는 문장은 파싱되지 않고 그대로 문자열로 출력된다.
<?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">
<!-- 연결할 인터페이스 정보를 namespace에 기술 -->
<mapper namespace="com.koreait.board.mapper.BoardMapper">
<select id="getList" resultType="com.koreait.board.bean.BoardVO">
<![CDATA[
SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, UPDATEDATE
FROM TBL_BOARD
WHERE BNO > 0
]]>
</select>
</mapper>
BoardMapperTest.java
@Test
public void testGetList()
{
// Lambda 문법
mapper.getList()
.forEach(board -> log.info(board.toString()));
}

전체 소스코드
BoardVO.java
package com.koreait.board.bean;
import lombok.Data;
@Data
public class BoardVO {
private Long bno;
private String title;
private String content;
private String writer;
private String regdate;
private String updatedate;
}
BoardMapper.java
package com.koreait.board.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.koreait.board.bean.BoardVO;
@Mapper
public interface BoardMapper {
//게시글 추가
public int insert(BoardVO vo);
public int insertSelectKey(BoardVO vo); //bno 채번 결과를 vo에 담음
//게시글 리스트
public List<BoardVO> getList();
}
BoardMapper.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">
<!-- 연결할 인터페이스 정보를 namespace에 기술 -->
<mapper namespace="com.koreait.board.mapper.BoardMapper">
<insert id="insert">
INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES(NEXTVAL(SEQ_BOARD), #{title}, #{content}, #{writer})
</insert>
<insert id="insertSelectKey">
<selectKey keyProperty="bno" order="BEFORE" resultType="long">
SELECT NEXTVAL(SEQ_BOARD) FROM DUAL
</selectKey>
INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES(#{bno}, #{title}, #{content}, #{writer})
</insert>
<select id="getList" resultType="com.koreait.board.bean.BoardVO">
<![CDATA[
SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, UPDATEDATE
FROM TBL_BOARD
WHERE BNO > 0
]]>
</select>
</mapper>
BoardMapperTest.java
package com.koreait.board.mapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.koreait.board.bean.BoardVO;
import com.koreait.board.util.MyUtil;
import lombok.extern.slf4j.Slf4j;
@SpringBootTest
@Slf4j
public class BoardMapperTest {
@Autowired
private BoardMapper mapper;
public void insertTest() {
BoardVO vo = new BoardVO();
vo.setTitle("자동제목");
vo.setContent("테스트");
vo.setWriter("테스터");
log.info("BoardVO = " + vo);
if(mapper.insertSelectKey(vo) == 1) {
log.info(MyUtil.BLUE + "Insert 성공" + MyUtil.END);
}
else {
log.info(MyUtil.BLUE + "Insert 실패" + MyUtil.END);
}
log.info("BoardVO = " + vo);
for(int i=0;i<15;i++) {
vo = new BoardVO();
vo.setTitle("테스트" + i);
vo.setContent("내용" + i );
vo.setWriter("나");
mapper.insert(vo);
}
}
@Test
public void testGetList()
{
// Lambda 문법
mapper.getList()
.forEach(board -> log.info(board.toString()));
}
}
'자바 공부 > [자바] 기본 공부' 카테고리의 다른 글
| [SPRING] 게시판 만들기 (0) | 2024.12.23 |
|---|---|
| [SPRING] DB 등록 (1) | 2024.12.19 |
| [SPRING] Mapper (1) | 2024.12.12 |
| [SPRING] Lombok 라이브러리 (1) | 2024.12.11 |
| [SPRING] 스프링 프레임워크 기초 (4) | 2024.12.10 |