보라코딩

코드로 배우는 스프링 웹 프로젝트 Part3 (ch8) 본문

코딩/Spring

코드로 배우는 스프링 웹 프로젝트 Part3 (ch8)

new 보라 2023. 2. 5. 20:58

 

 

src/main/java에 org.zerock.domain 패키지 만들어서

BoardVO 클래스 생성

package org.zerock.domain;

import java.util.Date;   //util 의 date 라는 점!!

import lombok.Data;

@Data
public class BoardVO {

private Long bno;
private String title, content, writer;
private Date regdate, updateDate;
}

 

 

src/main/java에 org.zerock.mapper 패키지 만들어서

BoardMapper 클래스 생성

package org.zerock.mapper;

import java.util.List;

import org.zerock.domain.BoardVO;

public interface BoardMapper {

List<BoardVO> getList();

}

 

 

src/main/resources에 org 폴더 만들고 zerock 폴더만들고 mapper 폴더 만들어서

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">

<mapper namespace = "org.zerock.mapper.BoardMapper">

<select id = "getList" resultType = "org.zerock.domain.BoardVO"> 

select * from tbl_board order by bno desc

</select>

</mapper>

 

 

src/test/java 폴더에 org.zerock.mapper 패키지에

BoardMapperTest 클래스 생성

package org.zerock.mapper;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class BoardMapperTests {

@Autowired
private BoardMapper boardMapper;

@Test
public void testGetList() {

log.info("---------------");
boardMapper.getList();
}
}

 


 

Insert

 

BoardMapper 클래스에 내용 추가

public void insert(BoardVO board);

 

BoardMapper.xml에 내용 추가

 

<insert id = "insert">
insert into tbl_board (bno, title, content, writer)
values (seq_board.nextval, #{title}, #{content}, #{writer})
</insert>

 

BoardMapperTests에 내용추가

@Test
public void testInsert() {

BoardVO vo = new BoardVO();
vo.setTitle("Test 테스트");
vo.setContent("Content 테스트");
vo.setWriter("tester");

boardMapper.insert(vo);
}

 


 

InsertSelectkey

 

BoardMapper 클래스에 내용 추가

public void insertSelectKey(BoardVO board);

 

BoardMapper.xml에 내용 추가

 

<insert id = "insertSelectKey">
<selectKey order = "BEFORE" keyProperty = "bno" resultType ="Long">
select seq_board.nextval from dual
</selectKey>

insert into tbl_board (bno, title, content, writer)
values (#{bno}, #{title}, #{content}, #{writer})
</insert>

 

BoardMapperTests에 내용추가

@Test
public void testInsertSelectKey() {

BoardVO vo = new BoardVO();
vo.setTitle("AAATest 테스트");
vo.setContent("AAAContent 테스트");
vo.setWriter("tester");

boardMapper.insertSelectKey(vo);

log.info("------------------");
log.info("after insert selectKey " + vo.getBno());
}

 


 

read

 

BoardMapper 클래스에 내용 추가

public BoardVO read(Long bno);

 

BoardMapper.xml에 내용 추가

 

<select id = "read" resultType ="org.zerock.domain.BoardVO">
select * from tbl_board where bno = #{bno} 
</select>

 

BoardMapperTests에 내용추가

@Test
public void testRead() {

BoardVO board = boardMapper.read(251L);
log.info(board);
}

 


 

delete

 

BoardMapper 클래스에 내용 추가

int delete(Long bno); // 삭제나 수정은 int로 주로 사용

 

BoardMapper.xml에 내용 추가

 

<delete id = "delete">
delete from tbl_board where bno = #{bno}
</delete>

 

BoardMapperTests에 내용추가

@Test
public void testDelete() {

int count = boardMapper.delete(222L);
log.info("count : " + count);
}

 

update

 

BoardMapper 클래스에 내용 추가

int update(BoardVO board);

 

BoardMapper.xml에 내용 추가

 

<update id = "update">
update tbl_board
set title = #{title},
content = #{content},
writer = #{writer},
updatedate = sysdate
where bno = #{bno}
</update>

 

BoardMapperTests에 내용추가

@Test
public void testUpdate() {

BoardVO board = new BoardVO();
board.setBno(251L);
board.setTitle("Updated Title");
board.setContent("Updated content");
board.setWriter("wowww");

log.info("count : " + boardMapper.update(board));
}