◎ 데이터베이스를 이용한 CRUD 진행 순서
▷ 테이블 칼럼 구조를 반영하는 VO(Value Object) 클래스 생성
▷ MyBatis의 Mapper 인터페이스 작성/XML 처리
▷ 작성한 Mapper 인터페이스의 테스트
1. 영속 계층의 구현 준비
▷ 대부분 웹 애플리케이션의 최종 목적은 데이터베이스에 데이터를 기록하거나 원하는 데이터를 가져오는 것
▶ 따라서, 개발시 어느 정도 설계가 진행되면 데이터 베이스 관련 작업을 함
◎ VO 클래스의 작성
◎ tbl_board의 테이블 구성
◎ src/main/java → org.codehows.domain → BoardVO 클래스 생성package org.codehows.domain; import java.util.Date; import lombok.Data; @Data public class BoardVO { private Long bno; private String title; private String content; private String writer; private Date regdate; private Date updateDate; }
root-context.xml의 일부를 활용해 프로젝트를 제작할 수 있습니다.<mybatis-spring:scan base-package="org.codehows.mapper"/>
◎ src/main/java → org.codehows.mapper → BoardMapper.java 인터페이스 생성
package org.codehows.mapper; import java.util.List; import org.apache.ibatis.annotations.Select; import org.codehows.domain.BoardVO; public interface BoardMapper { @Select("select * from tbl_board where bno > 0") public List<BoardVO> getList(); }
◎ src/test/java → org.codehows.mapper → BoardMapperTests.java 클래스 생성
package org.codehows.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.Setter; import lombok.extern.log4j.Log4j; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml") // Java Config // @ContextConfiguration(classes = {org.codehows.config.RootConfig.class}) @Log4j public class BoardMapperTests { @Setter(onMethod_ = @Autowired) private BoardMapper mapper; @Test public void testGetList() { mapper.getList().forEach(board -> log.info(board)); } }
BoardMapperTests 클래스는 스프링을 이용해서 BoardMapper 인터페이스의 구현체를 입받아 동작하게 합니다.
testGetList()의 결과는 SQL Developer에서 실행된 것과 동일해야 정상적으로 동작한 것입니다.
오라클에서 commit을 실행하면 아래와 같은 결과가 나타납니다.
◎ 오라클을 사용하기 위해서는 ojdbc8.jar 파일을 추가해야 함
1. 프로젝트 우클릭 → Java Build Path → Add Externla JARs... → ojdbc8.jar 파일 추가
2. Deployment Assembly → Add → Java Build Path Entries → ojdbc8.jar 추가
◎ Mapper XML 파일
▷ src/main/resources → org/codehows/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.codehows.mapper.BoardMapper"> <select id="getList" resultType="org.codehows.domain.BoardVO"> <![CDATA[ select * from tbl_board where bno > 0 ]]> </select> </mapper>
▷ xml 작성시 <mapper>의 namespace 속성 값을 mapper 인터페이스와 동일한 이름을 주는 것에 주의
▷ <select> 태그의 id 속성 값은 메소드의 이름과 일치해야 함
▷ resultType 속성 값은 select 쿼리의 결과를 특정 클래스의 객체로 만들기 위해 사용
◎ BoardMapper 인터페이스의 내용 수정
▷ 작성했던 sql 구문을 주석처리public interface BoardMapper { // @Select("select * from tbl_board where bno > 0") public List<BoardVO> getList(); }
이후 다시 BoardMapperTest 클래스를 실행하면 테이블이 아래와 같이 동일하게 나타납니다.
데이터베이스를 이용한 CRUD 진행을 위해 클래스 및 인터페이스 등을 생성해보았습니다.
다음 글부터 CRUD를 이용한 예제들을 다뤄볼게요!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Spring' 카테고리의 다른 글
[코드로 배우는 스프링 웹 프로젝트] ch09 비즈니스 계층 (0) | 2023.03.28 |
---|---|
[코드로 배우는 스프링 웹 프로젝트] ch08 영속/비즈니스 계층의 CRUD 구현 2(create, read, update, delete) (0) | 2023.03.28 |
[코드로 배우는 스프링 웹 프로젝트] ch07 스프링 MVC 프로젝트 기본 구성 (0) | 2023.03.27 |
[코드로 배우는 스프링 웹 프로젝트] ch06 스프링 MVC Controller 3(Controller Exception) (0) | 2023.03.27 |
[코드로 배우는 스프링 웹 프로젝트] ch06 스프링 MVC Controller 2 (0) | 2023.03.27 |