Open iknowahra opened 2 years ago
Structure 정리 Url -> controller -> service -> DAO -> Mapper -> DB
<?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="board"> <!-- 생략 --> <insert id="insertBoard"> INSERT INTO BOARD ( NO ,TITLE ,CONTENT ,REG_ID ,REG_DT ,UPD_ID ,UPD_DT ) VALUES( (SELECT MAX(B.NO)+1 FROM BOARD B) ,#{title} ,#{content} ,#{userId} ,NOW() ,#{userId} ,NOW() ) </insert> </mapper>
주의 해야할 점!
BOARD는 한 쿼리 내부에서 같은 이름으로 한 번만 호출할 수 있다.
따라서 BOARD의 MAX값에 접근할 경우 BOARD의 ALLIAS를 BOARD 외에 별도로 지정하여 호출해줘야 한다. SELECT MAX(B.NO)+1 FROM BOARD B) 에선 BOARD의 ALLIAS를 B로 설정하여 호출해야 한다.
SELECT MAX(B.NO)+1 FROM BOARD B)
package com.ahra.www.dao; @Repository("BoardDao") public class BoardDao { @Autowired // 이 객체를 bean에 넣어줌 원래라면 새롭게 만들어야 함. 의존성 주입 SqlSession sqlSession; public int insertBoard (FormTestVo vo) { return sqlSession.insert("board.insertBoard", vo); } }
참고 사항 : FormTestVo객체의 vo에 포함된 하나의 필드가 필요하면, vo로 표기할 수 있다.
FormTestVo
//생략 public FormTestVo selectBoardReader(FormTestVo vo) { //selectBoardReader(Integer no)대신 vo로 대체 가능 return sqlSession.selectOne("board.selectBoardReader", vo); } //생략
package com.ahra.www.service; @Service("BoardService") public class BoardServiceImpl implements BoardService { @Autowired BoardDao dao; /** * add post */ @Override public int insertBoard(FormTestVo vo) { // TODO Auto-generated method stub return dao.insertBoard(vo); // 성공한 횟수로 리턴됨 } }
참고 사항 : /** 주석*/을 작성하면, 해당 매소드에 접근 했을 때, 주석을 참고할 수 있어 여럿이 공동작업할 때 어떤 기능을 하는지, 어떤 파라미터가 필요한지 미리 알 수 있어 좋다.
/** 주석*/
// BoardController.java @Controller @RequestMapping("/board") public class BoardController { @Autowired BoardService service; @RequestMapping("/write") public String insertPost(){ return "/board/write"; } @RequestMapping(value="/regist", method=RequestMethod.POST) public String registPost(FormTestVo newPost){ int res = service.insertBoard(newPost); //성공한 횟수로 리턴됨 return "redirect:/board"; } }
viewer작성
<%--/board/write.jsp--%> <html> <head> <title>Write</title> </head> <body> <h1>Write post</h1> <form action="regist" method="post"> <label for="title"> title </label> <input id="title" name="title" type="text"><br> <label for="userId"> user </label> <input id="userId" name="userId" type="text"><br> <label for="content"> content </label> <textarea id="content" name="content"></textarea><br> <input type="submit" value="post"> </form> </body> </html>
2021.10.15
Structure 정리
Url -> controller -> service -> DAO -> Mapper -> DB
1. Mapper 를 작성하기
주의 해야할 점!
BOARD는 한 쿼리 내부에서 같은 이름으로 한 번만 호출할 수 있다.
따라서 BOARD의 MAX값에 접근할 경우 BOARD의 ALLIAS를 BOARD 외에 별도로 지정하여 호출해줘야 한다.
SELECT MAX(B.NO)+1 FROM BOARD B)
에선 BOARD의 ALLIAS를 B로 설정하여 호출해야 한다.2. DAO 작성하기
참고 사항 :
FormTestVo
객체의 vo에 포함된 하나의 필드가 필요하면, vo로 표기할 수 있다.3. Service 작성하기
참고 사항 :
/** 주석*/
을 작성하면, 해당 매소드에 접근 했을 때, 주석을 참고할 수 있어 여럿이 공동작업할 때 어떤 기능을 하는지, 어떤 파라미터가 필요한지 미리 알 수 있어 좋다.4. Controller 작성하기
5. View 작성하기
viewer작성