일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pom.xml 설정
- HTTP
- 공개 암호화키
- and 7 Web modules
- 정보처리기사
- 게시판 만들기
- 정보처리기사 해설
- 의존성 주입
- 쿠키와 세션의 차이
- Tomcat version 8.5 only supports J2EE 1.2
- 정보처리기사 1과목
- 코드로 배우는 스프링 웹프로젝트
- WAS와 WEB서버 차이
- java 면접질문
- and Java EE 5
- 인터페이스와 추상클래스 차이
- oracle Database 설정
- java jdk 오류
- 스프링 게시판 만들기
- 코드로 배우는 스프링 웹 프로젝트
- org.mybatis.spring.MyBatisSystemException
- Junit Test 에러
- 코드로 배우는 스프링부트 웹 프로젝트
- 톰캣에러
- @RequiredArgsConstructor
- 쿠키와 세션의 특징
- @RediretAttribute
- 테스트코드 작성
- HTTP와 HTTPS의 차이
- 정보처리기사 20년
- Today
- Total
모아이티
[게시판 만들기] 코드로 배우는 스프링 웹 프로젝트 Part3 - Day2 테스트코드 작성 & 게시물 조회/수정/삭제 본문
[게시판 만들기] 코드로 배우는 스프링 웹 프로젝트 Part3 - Day2 테스트코드 작성 & 게시물 조회/수정/삭제
Yun's kitchen 2021. 3. 18. 23:281. BoardVO 클래스와 MapperTest
- BoardVO 클래스 설정
게시판 속성을 생각할 때 글번호, 제목, 내용, 작성자 , 현재날짜, 수정날짜 이렇게 데이터를 넣어주고
@Data 어노테이션 사용
package org.joe.domain;
import java.sql.Date;
import lombok.Data;
@Data
public class BoardVO {
//DataType은 대문자로 설정해야 한다. 소문자로 잡을시 기본값을 가지기 때문이다
private Long bno;
private String title, content, writer;
private Date regDate, updatedate;
}
- org.joe.mapper 패키지에 BoardMapper 인터페이스 생성
package org.joe.mapper;
import java.util.List;
import org.joe.domain.BoardVO;
public interface BoardMapper {
List<BoardVO> getList();
}
- src/main/resources 폴더에 패기지 org.joe.mapper 폴더를 디렉토리별로 나눠준다.
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
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.joe.mapper.BoardMapper">
<select id="getList" resultType="org.joe.domain.BoardVO">
select * from tbl_board order by bno desc
</select>
</mapper>
getList의 쿼리문을 작성한다. 모든 정보를 불러오는 getList로 지어주고 resultType은 BoardVO의 모든 정보니까
패키지명과 클래스명을 같이 입력
제대로 설정됬는지 TimeMapperTests를 테스트 후에 BoardMapperTests 클래스 생성
package org.joe.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 getList() {
log.info("-------------");
boardMapper.getList();
}
}
BaordMapper를 @Autowired로 주입시키고 간다한가 @Test 어노테이션을 사용해
getList() 메소드를 불러온다.
결과값
굉장히 흔한 에러로 쿼리문 작성시 아이디를 잘못 적을 경우 나타나는 현상
2. insert / selectKey
insert
BoardMapper interface에 void이고 파라미터 값을 BoardVO를 받는 insert메소드 생성
boardMapper.xml에 insert 쿼리 작성
@Test
public void insert() {
BoardVO vo = new BoardVO();
vo.setTitle("insert 테스트다");
vo.setContent("테스트란 말이다");
vo.setWriter("주인님");
boardMapper.insert(vo);
}
insert 메서드에 BoardVO 객체 생성 후에 title, content, writer에 값을 set 해주고
insert 메서드에 vo 객체를 담아서 insert()실행
insertSelectKey
void 타입의 파라미터를 BoardVO를 받는 insertSelectKey 메서드 생성
<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>
insert 쿼리 작성시 insert문을 그대로 쓰대 <selectKey> 속성을 사용하는데 글번호를 key로 잡을테니
keyproperty는 bno로 입력하고 bno 타입을 long으로 설정했으니 resultType에 long 설정
3. 게시물 조회 / 수정 / 삭제
BoardMapper.java -> BoardMapper.xml -> BoardMapperTests.java 순으로 테스트작성
조회
BoardVO 타입이고 파라미터 bno 값을 받는 read 메서드 생성
<select id="read" resultType="org.joe.domain.BoardVO">
select * from tbl_board where bno = #{bno}
</select>
resultType은 패키지명과 클래스명 그대로
BoardVO 타입이고 boardMapper의 read 메서드를 불러오는데 2번 글을 불러 오기로 했다.
결과
삭제
삭제는 글번호만 있어도 되니까 파라미터를 bno만 받는다.
<delete id="delete">
delete from tbl_board where bno = #{bno}
</delete>
조건을 글번호로 하는 쿼리문을 작성
22번의 글을 삭제해본다.
수정
수정은 모든 내용을 수정해야하니 파라미터값을 BoardVO 전체 값을 받는다.
<update id="update">
update tbl_board
set title = #{title},
content = #{content},
writer = #{writer},
updatedate = sysdate
where bno = #{bno}
</update>
update 쿼리문 작성시 콤마와 #{} 신경써서 작성.
updatedate는 수정날짜로서 sysdate를 사용하여 현재날짜로 수정되게 한다.
BoardVO 객체를 생성 후 각각의 값들을 수정 후 출력
결과