본문 바로가기

수업 복습하기/개인 페이지 만들기

[포트폴리오] 개인 페이지 제작기 01

728x90
728x90

= mysql 테이블 만들기 연습하기!

폴더위치 : course\java\workspace\ex00\src\main\webapp\WEB-INF\sql

 

보통 테이블 만들 때 순서 (책에서) : mapper -> service -> controller -> jsp 순으로 작성한다.

 

우리는 구분하기 편하게 패키지 새로 생성했는데, 

controller, mapper, domain, service에 다 project1 생성하고 시작했다.

 

bean이 가지고있는 property와 column명 일치안하면 별칭 줘야하는 부분 까먹지 말기

(우리는 같으니까 그냥진행해도 된다)

 

책에서 진행한 순서대로 따라가보면서 만들 것이기 때문에, 우선 mapper 먼저 작성하도록 하는데,

이는 mysql 쿼리에 만들어놓았던 필드 이름에 맞춰서 class를 작성해주면된다.

vo 뜻 : value object (우리가 알고있는 bean!)

 

내가봤을 때, 기본적으로 BoardMapper(인터페이스)부분이 깔끔하고 잘 작성되어야 그 뒤에부분까지 잘 나아가는 것 같다.

객체 자체에 게시물을 입력하고, 수정하고 이런 것들에 parameter가 어떻게 들어가있는지 헷갈리지 말아야 할 것 같은 느낌!

이부분이 작성이 깔끔하게되면, method 이름만 가져다가, mysql 작성하면 되니까 BoardMapper.xml까지 깔끔하게 작성이 완료될 수 있는 것 같다.

 

insert 쿼리에서 ${}작성 할 때, get빠져도되는거 다시 기억하기

 

= 지금 만들고있는 식이 오류없이 잘 진행되는지 확인하기 위해서 남는시간에 선생님이 알려준 부분 (jnit test case)

위치 : ex00\src\test\java\org\zerock\mapper01.project1

이부분에서 pom.xml 추가한 부분이 있는데 

		<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework-version}</version>
			<scope>test</scope>
		</dependency>

db.properties불러오는데 오류가있어서,  root-context.xml의 일정부분을 classpath로 수정하였고,

그 잏에 적은 BoardMapperTest식을 첨부한다!

 

이제 insert가 잘되는지 테스트하자!

setTitle / setContent / setWriter를 제외하고서 나머지는 자동으로 들어가는 column이다!

assertEquals(1, cnt); cnt가 1인지 확인하는식 

 

와.. 테이블만들 때 이름 잘못만들어서 table rename하는거 배웠다 ^^...넘힘들었어..

 

< BoardVO.java >

package org.zerock.domain.project1;

import java.time.LocalDateTime;

import lombok.Data;

@Data
public class BoardVO {
	private Integer id;
	private String title;
	private String content;
	private String writer;
	private LocalDateTime inserted;
	private LocalDateTime updated;
}

< BoardMapper.java >

package org.zerock.mapper.project1;

import java.util.List;

import org.zerock.domain.project1.BoardVO;

public interface BoardMapper {

	// 모든 게시물 조회
	public List<BoardVO> getList(); 

	// 새 게시물 입력 & get generated key
	public int insert(BoardVO board); 

	// id(pk)로 하나의 게시물 조회
	public BoardVO read(Integer id); 

	// id(pk)로 하나의 게시물 삭제
	public int delete(Integer id);

	// 하나의 게시물 수정
	public int update(BoardVO board);

}

< 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.zerock.mapper.project1.BoardMapper">

	<select id="read"
		resultType="org.zerock.domain.project1.BoardVO">
		SELECT
			id,
			title,
			content,
			writer,
			inserted,
			updated,
		FROM
			Board
		WHERE
			id = #{id}
	</select>
	<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
	INSERT INTO
		Board (title, content, writer)
	VALUES
		(#{title}, #{content}, #{writer})

	</insert>

	<update id="update">
		UPDATE
			Board
		SET
			title = #{title},
			content = #{content},
			writer = #{writer},
			inserted = #{inserted},
			updated=NOW()
		WHERE
			id = #{id}
	</update>

	<delete id="delete">
		DELETE FROM Board WHERE id = #{id}
	</delete>
</mapper>

< BoardMapperTest.java >

package org.zerock.mapper.project1;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

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 org.zerock.domain.project1.BoardVO;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class BoardMapperTest {
	
	@Autowired
	public BoardMapper mapper;
	
	@Test
	public void mapperTest() {
		assertNotNull(mapper);
	}

	@Test
	public void insertTest() {
		BoardVO vo = new BoardVO();
		vo.setTitle("test 용 제목");
		vo.setContent("test 용 본문");
		vo.setWriter("tester");

		int cnt = mapper.insert(vo);

		assertEquals(1, cnt);
	}	
}

우선 제일 기본적인 페이지 만드는 것을 배웠다! 이거에요~

 

제일 기본적인 페이지 만들기 화이팅

 

728x90