Q&A ๊ฒ์ํ ๋ง๋ค๊ธฐ
1. DB - QNA ํ ์ด๋ธ ์์ฑ
CREATE TABLE QNA (
NUM NUMBER CONSTRAINT QNA_NUM_PK PRIMARY KEY,
TITLE VARCHAR2(100) NOT NULL,
CONTENTS VARCHAR2(4000),
WRITER VARCHAR2(100) NOT NULL,
REGDATE DATE,
HIT NUMBER,
REF NUMBER,
STEP NUMBER,
DEPTH NUMBER
);
- ์์ฑ๋ QNA ํ ์ด๋ธ
- SEQUENCE ์์ฑ : num์ ์ฌ์ฉ
CREATE SEQUENCE QNA_SEQ
INCREMENT BY 1
START WITH 1;
2. ํ์ผ ์ถ๊ฐ
- QnaDTO class ์์ฑ
- QnaDAO class ์์ฑ
- qnaMapper.xml ์์ฑ
3. Test Case ์์ฑ
- ํ ์คํธ ์ผ์ด์ค๋ก insert ๋ฑ ํ์ธ
<Source Code>
QnaDTO
- getter / setter, ๊ธฐ๋ณธ ์์ฑ์
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
package com.spring.s1.qna;
import java.util.Date;
public class QnaDTO {
private long num;
private String title;
private String contents;
private String writer;
private Date regDate;
private Integer hit;
private Integer ref;
private Integer step;
private Integer depth;
public QnaDTO() {
// TODO Auto-generated constructor stub
}
public long getNum() {
return num;
}
public void setNum(long num) {
this.num = num;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public Integer getHit() {
return hit;
}
public void setHit(Integer hit) {
this.hit = hit;
}
public Integer getRef() {
return ref;
}
public void setRef(Integer ref) {
this.ref = ref;
}
public Integer getStep() {
return step;
}
public void setStep(Integer step) {
this.step = step;
}
public Integer getDepth() {
return depth;
}
public void setDepth(Integer depth) {
this.depth = depth;
}
}
|
cs |
QnaDAO
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
32
33
34
35
36
37
38
39
40
41
|
package com.spring.s1.qna;
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 QnaDAO {
@Autowired
private SqlSession sqlSession;
private final String NAMESPACE = "com.spring.s1.qna.QnaDAO.";
//Detail
public QnaDTO detail(QnaDTO qnaDTO) throws Exception {
return sqlSession.selectOne(NAMESPACE + "detail", qnaDTO);
}
//List
public List<QnaDTO> list() throws Exception {
return sqlSession.selectList(NAMESPACE + "list");
}
//Insert(Add)
public int add(QnaDTO qnaDTO) throws Exception {
return sqlSession.insert(NAMESPACE + "add", qnaDTO);
}
//update
public int update(QnaDTO qnaDTO) throws Exception {
return sqlSession.update(NAMESPACE + "update", qnaDTO);
}
//Delete
public int delete(QnaDTO qnaDTO) throws Exception {
return sqlSession.delete(NAMESPACE + "delete", qnaDTO);
}
}
|
cs |
qnaMapper.xml
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
|
<?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.qna.QnaDAO">
<select id="list" resultType="QnaDTO">
SELECT * FROM QNA
</select>
<select id="detail" resultType="QnaDTO">
SELECT * FROM QNA WHERE num = #{num}
</select>
<insert id="add" parameterType="QnaDTO">
INSERT INTO QNA
VALUES(QNA_SEQ.nextval, #{title}, #{contents}, #{writer}, SYSDATE, 0, 0, 0, 0)
</insert>
<update id="update" parameterType="QnaDTO">
UPDATE QNA
SET TITLE = #{title}, CONTENTS = #{contents}
WHERE NUM = #{num}
</update>
<delete id="delete" parameterType="QnaDTO">
DELETE QNA WHERE NUM = #{num}
</delete>
</mapper>
|
cs |
QnaDAOTest
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package com.spring.s1.qna;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.spring.s1.MyJunitTest;
public class QnaDAOTest extends MyJunitTest{
@Autowired
private QnaDAO qnaDAO;
@Test
public void check() {
assertNotNull(qnaDAO);
}
@Test
public void listTest() throws Exception{
List<QnaDTO> ar = qnaDAO.list();
assertNotEquals(0, ar.size());
}
@Test
public void detailTest() throws Exception {
QnaDTO qnaDTO = new QnaDTO();
qnaDTO.setNum(1L);
qnaDTO = qnaDAO.detail(qnaDTO);
assertNotNull(qnaDTO);
}
//@Test
public void addTest() throws Exception {
QnaDTO qnaDTO = new QnaDTO();
int result = 0;
for(int i = 2; i <= 100; i++) {
qnaDTO.setTitle("title" + i);
qnaDTO.setContents("content" + i);
qnaDTO.setWriter("writer" + i);
result = qnaDAO.add(qnaDTO);
}
assertEquals(100, result);
}
@Test
public void deleteTest() throws Exception {
QnaDTO qnaDTO = new QnaDTO();
qnaDTO.setNum(101L);
int result = qnaDAO.delete(qnaDTO);
assertEquals(1, result);
}
}
|
cs |
728x90