티스토리 뷰

개인공부/Spring

CRUD 구현

날따라해봐요요롷게 2021. 11. 2. 13:40

영속 계층의 작업 순서

- 테이블의 column 구조를 반영하는 VO(VALUE OBJECT) 클래스의 생성

- MyBatis 의 Mapper 인터페이스의 작성/XML 처리

- 작성한 Mapper 인터페이스의 테스트

 

## VO 클래스의 작성

VO 클래스는 테이블 설계를 기준으로 작성하면 된다.

 

BoardVO

@Data
public class BoardVO {
	
	private Long bno;
	private String title, content, wirter;
	private Date regdate, updateDate;
	
}

BoardVO 클래스는 Lombok의 @Data 어노테이션을 사용하여 생성자, getter/setter, toString() 만들어낸다.

 

## Mapper 인터페이스, Mapper XML

 : Mapper 인터페이스를 작성할 때는 select, insert 작업을 우선해서 작성한다.

 

BoardMapper

public interface BoardMapper {
		List<BoardVO> getList();
}

BoardMapper.xml

<mapper namespace="org.zerock.mapper.BoardMapper">
	<select id="getList" resultType="org.zerock.domain.BoardVO"> 
	<!-- id 이름을 틀리게 적는 경우가 많다. 자주 만나게 되는 오류 메세지 알아놓기 -->
		select * from tbl_board order by bno desc 
	</select>
</mapper>

 

작성된 BoardMapper 인터페이스를 테스트 하기 위해서 BoardMapperTests 클래스로 테스트를 진행한다.

BoardMapper.xml 파일에 select 태그 <select>의 id 속성값은 메서드의 이름과 일치하게 작성한다. resultType 속성의 값은 select 쿼리의 결과를 특정 클래스의 객체로 만들기 위해서 설정한다.

 

 

- BoardMapperTests 

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

BoardServiceTest 는 BoardService 객체가 제대로 주입이 되었는지 확인한다.

 

- 등록 작업

 : 등록은 BoardServiceImpl 에서 파라미터로 던진 BoardVO 타입의 객체를 BoardMapper를 통해서 처리한다.

 

//BoardServiceImpl 
@Override
	public Long register(BoardVO board) {
		
		mapper.insertSelectKey(board);
		
		return board.getBno();
	}

등록 후 등록된 bno 값을 받아온다.

 

테스트

BoardServiceTests
@Test
	public void testRegister() {
		BoardVO vo = new BoardVO();
		
		vo.setTitle("서비스 test");
		vo.setContent("서비스 test content");
		vo.setWriter("writer 서비스");
		
		Long bno = service.register(vo);
		
		log.info("BNO : " + bno);
		
	}

등록 테스트는 BoardVO 객체 타입에 값을 저장하여 service의 register 메소드로 처리한다.

register 메소드는 등록된 bno(등록번호)를 return 해준다.

 

- 목록(리스트) 작업의 구현

: 현재 테이블에 저장된 모든 데이터를 가져오는 로직 구현

BoardServiceImpl
@Override
	public List<BoardVO> getList() {
		return mapper.getList();
	}
    // Test
    
  @Test
	public void testGetList() {
		service.getList().forEach(board -> log.info(board));
	}

 

 

 

 

 

 

 

 

 

 

'개인공부 > Spring' 카테고리의 다른 글

스프링2  (0) 2022.05.12
면접 준비 - spring framework  (0) 2022.05.11
스프링1  (0) 2022.05.09
설정 - ORACLE DB  (0) 2021.09.15
Lombok  (0) 2021.09.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함