Oracle와 mybatis 연동 실습 (글쓰기 구현)

Back-End/Spring 2019. 6. 5. 17:30
728x90
반응형

글쓰기 구현


이름과 메모를 적고 "확인" 을 누르면 컨트롤러에 매핑한 insert.do 로 이동



memo_list.jsp 중 일부 (글쓰기 폼 작성)


<h2>한줄 메모장</h2>
 
<form method="post" action="${path }/memo/insert.do"<!-- 글쓰기 폼을 작성 insert.do로 넘김 -->
이름 : <input name = "writer" size = "10" >
메모 : <input name = "memo" size = "40" >
<input type = "submit" value="확인">
</form>




MemoController.java 중 일부 (컨트롤러)


이름과 메모값을 둘다 가지고 있는 클래스가 MemoDTO이기 때문에 DTO를 매개변수로 받고,

이름과 메모를 memoService에 insert 한다.

마지막으로 list.do로 리턴하면 목록이 갱신된다.


MemoService.java에 insert 메소드가 2개가 있는데 궂이 2개를 매개변수로 받는 메소드를 사용한 이유는

일반 DTO로 받으면 다시 풀어야 하기 때문에 그렇다.


1
2
3
4
5
6
//폼에서 넘긴값을 읽을때는 
    @RequestMapping("insert.do")
    public String insert(MemoDTO dto) {
        memoService.insert(dto.getWriter(), dto.getMemo());
        return "redirect:/memo/list.do";
    }
cs




MemoDAO.java (흰색 부분이 글쓰기 구현)


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
package com.example.spring02.model.memo.dao;
 
import java.util.List;
 
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import com.example.spring02.model.memo.dto.MemoDTO;
 
public interface MemoDAO {
    //인터페이스는 객체를 생성하지 못함
    //root-context.xml에서 <mybatis-spring:scan base-package = "com.example.spring02.model.memo" />라고 설정을 해놓은것 때문에
    //@Select문 이하~~가 하나의 객체로 완성된다.
    @Select ("select * from memo order by idx desc")
    //현재 list()메소드는 몸체가 없기 때문에 select 어노테이션의 쿼리가 호출됨
    public List<MemoDTO> list();
    
    @Insert("insert into memo (idx,writer,memo) " //메모 테이블의 (idx, writer,memo) 속성에 ? 값을 삽입
    + "values ((select nvl(max(idx)+1,1) from memo)"   // 일단 서브쿼리 (번호를 검색하기 위한 쿼리 select nvl(max(idx)+1,1) from memo)
    + ",#{writer},#{memo})")                            // 코드가 하나도 없으면 null이 나오니까 nvl은 값이 null일때 대체값이다. 즉 값이 null 이면 1이 출력
                                                        //메모 테이블에서 가장큰 idx값에 +1을 한다 
                                                        //이쪽은 마이바티스에서 쓰던 방식 #{변수}를 사용하면 된다.
                                                                        
    public void insert(@Param("writer"String writer,        //Param은 위쪽에서 사용한 마이바티스  #{변수}에 무슨값이 들어갈건지 알려주는 어노테이션이다.
            @Param("memo"String memo);                    //@Param("writer") String writer;  위쪽에서 사용한 writer에 writer 값을 넣는다.
                                                            //@Param("memo") String memo;         위쪽에서 사용한 memo에 memo 값을 넣는다.
    
    
}
 
cs



------47분까지 봄------

728x90
반응형
: