프로젝트 기획이 끝난 후, 어제부터 본격적으로 구현 단계에 들어갔다.
현재 Spring Boot + Maven + MyBatis + Oracle 조합으로 프로젝트를 진행중이며, Git으로 팀원들과 형상관리지금까지 완료한 부분은 내 담당(?)인 Admin 페이지를 MVC 모델로 구성하고, MyBatis로 DB 연동에 성공하였다. front 부분은 우선 대략적인 그림만 그려놓은 상태.
MapperTests 파일을 새로 생성하여, DB 연동 Test 완료하였다.
(이 과정에서 엄청난 에러들을 겪었다. DAO 메소드들에 DAO, DTO가 혼동되어 들어간다던가, 테이블에 Seq(FK)가 많아서 자꾸 부모를 찾으라고 하질 않나 ㅠㅠ)
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
|
package io.ticly.mint;
import io.ticly.mint.admin.mapper.AdminWriteMapper;
import io.ticly.mint.admin.model.dao.ArticleDAO;
import io.ticly.mint.admin.model.dto.ArticleDTO;
import io.ticly.mint.admin.model.dto.ArticleSentenceDTO;
import io.ticly.mint.login.model.dao.LoginDAO;
import io.ticly.mint.login.model.dto.LoginDTO;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.sql.Timestamp;
import java.util.List;
@SpringBootTest
public class MapperTests {
@Autowired
private ArticleDAO articleDAO;
@Autowired
private LoginDAO loginDAO;
@Test
public void testOfInsert() throws Exception {
ArticleDTO articleDTO = new ArticleDTO();
ArticleSentenceDTO articleSentenceDTO = new ArticleSentenceDTO();
articleDTO.setTitle(" Article 제목 ");
articleDTO.setSummary(" Article 요약 ");
articleSentenceDTO.setEng_sentence(" Article 문장 1 입니다. ");
articleDTO.setUrl("http://aaa.com");
articleDTO.setHashtag("#test #hash");
articleDTO.setCategory_seq(2);
articleDTO.setReg_date("2020/08/11 11:05:05");
articleDTO.setDel(0);
articleDTO.setApply_count(10);
// List<LoginDTO> list = loginDAO.getMember();
int result = articleDAO.WriteArticle(articleDTO);
System.out.println("결과는" + 1 + "입니다." );
}
}
|
cs |
<< 오늘의 교훈 >>
1. Dao와 Service 부분에서 Implement 파일을 따로 생성하여 관리하니 더 깔끔하고, 구현하기도 손이 덜 가서(?) 좋은 것도 있고, 더 명확한 준비 > 구현 단계를 가지고 갈 수 있어서 좋았다.
2. mapper 폴더 관리를 확실하게 해줘야 mapper를 제대로 찾는다. (자꾸 DAO를 못 찾는다고 해서 오류로 한참 헤맸음...)
3. adminMapper.xml 파일에서 sql문 작성시 sql문 중간에 주석 절대 넣지 말자. 저 줄들은 상당히 거슬리지만 아무튼 돌아는 가니 다행이지만, 주석 빼니 오류가 해결 된 부분이 있었다.
4. CRUD 구현시 DAO에서 리턴 타입을 int로 받아왔는지 void로 받아왔는지 명확하게 구분하자.
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
|
package io.ticly.mint.admin.model.dao;
import io.ticly.mint.admin.model.dto.ArticleDTO;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
// xml에서 정의한 sqlSession 사용
@Repository
public class ArticleDAO implements ArticleDAOimpl {
private final SqlSessionTemplate sqlSessionTemplate;
private static final String namespace = "articleDAO";
public ArticleDAO(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}
public int WriteArticle(ArticleDTO articleDTO) throws Exception {
return sqlSessionTemplate.insert(namespace+".WriteArticle", articleDTO) ;
}
@Override
public List<ArticleDAO> ArticleListAll() throws Exception {
return sqlSessionTemplate.selectList(namespace+".selectAll");
}
@Override
public int ArticleDetail(int ArticleNum) throws Exception {
return sqlSessionTemplate.update(namespace+".selectOne", ArticleNum);
}
@Override
public void ArticleUpdate(ArticleDAO articleDAO) throws Exception {
sqlSessionTemplate.update(namespace+".modify", articleDAO);
}
@Override
public void ArticleDelete(int ArticleNum) throws Exception {
sqlSessionTemplate.delete(namespace+".remove", ArticleNum);
}
@Override
public void hitUpdate(int ArticleNum) throws Exception {
sqlSessionTemplate.update(namespace+".hitUpdate", ArticleNum);
}
}
|
cs |
5. Commit은 익숙해질 때 까지 자주자주 하자. 충돌까지 났어서 멘붕 왔었음ㅋ.ㅋ 욕심부려서 기능 하나 구현한다고 미루지말고 그 때 그 때 하자. 자꾸 재배치 한다 하니까 멘붕........ 결국 나 때문에 merge ㄱㄱ ... 도박.. 했었음.. 아찔하다 ㅠㅠ
6. IntelliJ에서 Maven 플러그인 기능을 적극 활용해보자. (처음 알았음)
'Side Project' 카테고리의 다른 글
#09. [Side Project 1] JSP 로그인, 게시판 만들기 (9) :: ★제일 중요한 페이징(Paging) (0) | 2020.07.30 |
---|---|
#08. [Side Project 1] JSP 로그인, 게시판 만들기 (8) :: 글 검색 기능 (0) | 2020.07.30 |
#07. [Side Project 1] JSP 로그인, 게시판 만들기 (7) :: 글 수정 (0) | 2020.07.30 |
#06. [Side Project 1] JSP 로그인, 게시판 만들기 (6) :: 글 삭제 (0) | 2020.07.30 |
#05. [Side Project 1] JSP 로그인, 게시판 만들기 (5) :: 글 내용 Detail 자세히 보기 (0) | 2020.07.30 |