자바 공부/[자바] 기본 공부

[SPRING] 게시글 추가, 리스트 불러오기

햅2024 2024. 12. 18. 21:42

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()));
	}
}

 

 

board (4).zip
0.05MB

'자바 공부 > [자바] 기본 공부' 카테고리의 다른 글

[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