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 ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์คํํ๊ธฐ