일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바의정석요약
- CRUD구현
- 자바의정석
- 게시판만들기
- 소프트웨어개발
- 스프링부트
- 소프트웨어설계
- 정처기설명
- 게시판프로젝트
- 어노테이션
- 이것이자바다
- 프로그래머스
- 코딩테스트
- 정보처리기사필기
- springboot
- 정보처리기사
- 정처기예상문제
- CRUD
- 스프링
- 파이썬
- spring
- 파이선
- 자바
- java
- function
- 정처기
- 정처기공부
- 게시판
- 정처기필기
- PYTHON
- Today
- Total
Helmi
게시판 프로젝트 - CRUD 구현 ①영속 계층 구현 준비 본문
com.board.domain.BoardVO.class
package com.Borad.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;
}
XML : 단순 테스트 수정하는 과정으로 끝남
어노테이션 : 코드 수정, 빌드하는 등 유지 보수성이 떨어짐(SQL 복잡해지고 검색과 같이 상황 따라 다른 SQL문 처리되는 경우 유용하지 못함)
Mapper 인터페이스
root-context.xml 일부
<mybatis-spring:scan base-package ="com.board.mapper"/>
Mapper 인터페이스 작성 시 리스트(select), 등록(insert) 작업 우선해서 작성
com.board.mapper.BoardMapper.java(인터페이스)
package com.board.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.Borad.domain.BoardVO;
public interface BoardMapper {
@Select(" select * from tbl_board where bno > 0")
public List<BoardVO> getList();
}
BoardMapper 인터페이스 작성 시 이미 작성된 BoardVO 클래스 적극적으로 활용해 반드시 필요한 SQL을 어노테이션 속성값으로 처리 가능( SQL 작성 시 반드시 ';' 없도록 작성 )
SQL Developer에서 먼저 확인하는 이유는
1) SQL이 문제 없이 실행 가능한지 확인
2) 데이터베이스의 commit 하지 않았다면 나중에 테스트 결과 달라지므로 먼저 비교하기 위해
package com.board.controller;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.board.mapper.BoardMapper;
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 = {com.board.config.RootConfig.class})
@Log4j
public class BoardMapperTests {
@Setter(onMethod_ = @Autowired)
private BoardMapper mapper;
@Test
public void testGetList() {
mapper.getList().forEach(board -> log.info(board));
}
}
MapperXML 파일
BoardMapperTests 테스트 완료 - src/main/resources 내에 패키지와 동일한 com/board/mapper 단계 폴더 생성 후 XML 파일 작성. (폴더 하나씩 생성할 것!)
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 ="com.board.mapper.BoardMapper">
<select id ="getList" resultType="com.board.domain.BoardVO">
<![CDATA[
select * from tbl_board where bno > 0
]]>
</select>
</mapper>
XML 작성시 반드시 <mapper>의 namespace 속성 값을 Mapper 인터페이스와 동일한 이름으로 주는 것 주의!
<select> 태그의 id 속성값은 메서드의 이름과 일치하게 작성
resultType 속성 값은 select 쿼리 결과를 특정 클래스의 객체로 만들기 위해 설정.
XML에 사용한 CDATA 부분은 XML에서 부등호 사용하기 위해 사용
XML에 SQL문 처리되었으니 BoardMapper 인터페이스에 SQL 제거
com.board.mapper.BoardMapper.java(인터페이스)
package com.board.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.Borad.domain.BoardVO;
public interface BoardMapper {
//@Select("select * from tbl_board where bno > 0")
public List<BoardVO> getList();
}
인터페이스 수정 후 반드시 기존 테스트 코드 통해 기존과 동일히 동작하는지 확인!
'SpringBoot' 카테고리의 다른 글
게시판 프로젝트 - CRUD 구현 ③ 영속 영역 CRUD 구현, READ(SELET)처리 (0) | 2023.04.29 |
---|---|
게시판 프로젝트 - CRUD 구현 ② 영속 영역 CRUD 구현, INSERT (0) | 2023.04.28 |
게시판 프로젝트 - database(oracle) (0) | 2023.04.26 |
게시판 프로젝트 - pom.xml 설정 (0) | 2023.04.26 |
쿼리 메소드 -2 (0) | 2023.03.17 |