๐Ÿ˜Ž Today I Learned

[TIL] 22.02.18

soozkim 2022. 2. 18. 00:36
Today I Learned

Notice Table , Sequence ์ƒ์„ฑ

- ๊ธ€๋ฒˆํ˜ธ, ๊ธ€์ œ๋ชฉ, ๊ธ€๋‚ด์šฉ, ์ž‘์„ฑ์ž, ์ž‘์„ฑ์ผ์ž, ์กฐํšŒ์ˆ˜

- ํ…Œ์ด๋ธ”๋ช… : Notice

- Sequence ์ƒ์„ฑ

- SqlDeveloper์—์„œ ์‹คํ–‰ ํ›„ Commit ์‹คํ–‰ํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ธฐ

-- NOTICE TABLE ์ƒ์„ฑ
CREATE TABLE NOTICE (
    NOTICENUM NUMBER CONSTRAINT NO_NUM_PK PRIMARY KEY,
    NOTICETITLE VARCHAR2(1000),
    NOTICECONTENTS VARCHAR2(4000),
    NOTICEWRITER VARCHAR2(1000),
    NOTICEREGDATE DATE,
    NOTICEHIT NUMBER
);

SELECT * FROM notice;

-- NOTICE SEQ ์ƒ์„ฑ
CREATE SEQUENCE NOTICE_SEQ
    INCREMENT BY 1
    START WITH 1;
    

COMMIT;

 

NoticeDTO ์ƒ์„ฑ

- private ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์„ ์–ธ

- NoticeDTO ์ƒ์„ฑ์ž ์„ ์–ธ

- Getter, Setter ์ƒ์„ฑ

 

Notice Mapper ์—ฐ๊ฒฐ

- mapper ํƒœ๊ทธ์˜ namespace๋Š” ์—ฐ๊ฒฐํ•  DAO์˜ ํ’€ํŒจํ‚ค์ง€๋ช….ํด๋ž˜์Šค๋ช…(FQDN)

- select ํƒœ๊ทธ ์•ˆ์— select๋ฌธ ์ž‘์„ฑ (; ์กฐ์‹ฌ) , resultType์€ Select ํƒœ๊ทธ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(๊ฒฐ๊ณผ๋ฌผ ์ „์†ก)

- insert, delete ํƒœ๊ทธ๋Š” parameterType์„ ์‚ฌ์šฉ(? ๊ฐ’ ๋„ฃ์–ด์ค„ ๋•Œ)

- Parameter ์ฒ˜๋ฆฌ : #{} - DTO type์ด๋ฉด Getter์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์ค€๋‹ค

<?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.spring.s1.notice.NoticeDAO">
	<select id="detail" resultType="com.spring.s1.notice.NoticeDTO">
		SELECT * FROM NOTICE WHERE NOTICENUM = #{noticeNum}
	</select>

	<select id="list" resultType="com.spring.s1.notice.NoticeDTO">
		SELECT * FROM NOTICE
	</select>
	
	<insert id="add" parameterType="com.spring.s1.notice.NoticeDTO">
		INSERT INTO NOTICE
		VALUES(NOTICE_SEQ.NEXTVAL, #{noticeTitle}, #{noticeContents}, #{noticeWriter}, #{noticeRegDate}, #{noticeHit})
	</insert>
	
	<delete id="delete" parameterType="com.spring.s1.notice.NoticeDTO">
		DELETE NOTICE WHERE NOTICENUM = #{noticeNum}
	</delete>
</mapper>

 

NoticeDAO ์ƒ์„ฑ

- ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ SqlSession ์„ ์–ธ ํ›„ @Autowired ์ฃผ์ž…

- ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ final NAMESPACE ์„ ์–ธ : NoticeDAO ํŒจํ‚ค์ง€๋ช… ๋Œ€์ž…(๋์— . ์ถ”๊ฐ€)

- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(throws Exception)

- ๋ฉค๋ฒ„ ๋ฉ”์„œ๋“œ : List (๊ธ€ ๋ฆฌ์ŠคํŠธ) / Detail(๊ธ€ ์ƒ์„ธ๋‚ด์šฉ) / Add(๊ธ€ ์ž‘์„ฑ) / Delete(๊ธ€ ์‚ญ์ œ)

- Add, Delete๋Š” return ๊ฐ’์ด int ํƒ€์ž…

- sqlSession.๋ฉค๋ฒ„๋ฉ”์„œ๋“œ๋ช…(namespace+"id๋ช…") : Mapper ๋ณด๋‚ด์•ผํ•˜๋Š” parameter ๊ฐ€ ์—†์„ ๋•Œ

- sqlSession.๋ฉค๋ฒ„๋ฉ”์„œ๋“œ๋ช…(namespace+"id๋ช…", ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’) : Mapper ๋ณด๋‚ด์•ผํ•˜๋Š” parameter ๊ฐ€ ์žˆ์„ ๋•Œ

- ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’์€ ๋”ฑ 1๊ฐœ๋งŒ ๊ฐ€๋Šฅ, 2๊ฐœ ์ด์ƒ ๋ณด๋‚ผ ์ˆ˜ ์—†์Œ

package com.spring.s1.notice;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class NoticeDAO {
	
	@Autowired
	private SqlSession sqlSession;
	private final String NAMESPACE = "com.spring.s1.notice.NoticeDAO.";
	
	//Detail
	public NoticeDTO detail(NoticeDTO noticeDTO) throws Exception{
		return sqlSession.selectOne(NAMESPACE + "detail", noticeDTO);
	}
	
	//List
	public List<NoticeDTO> list() throws Exception{
		return sqlSession.selectList(NAMESPACE + "list");
	}
	
	//Insert
	public int add(NoticeDTO noticeDTO) throws Exception{
		return sqlSession.insert(NAMESPACE + "add", noticeDTO);
	}
	
	//Delete
	public int delete(NoticeDTO noticeDTO) throws Exception{
		return sqlSession.delete(NAMESPACE + "delete", noticeDTO);
	}
}

 

Junit Test ์‹คํ–‰

- List, Detail, Add, Delete ๊ฐ€ ์ž˜ ๋˜๋Š”์ง€ Junit Test ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ

728x90