티스토리 뷰
영속 계층의 작업 순서
- 테이블의 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 |