@Controller("memberController")
public class MemberController{
}
@Controller("memberController")
MemberController memberController = new MemberController() 같은 의미이다. 줄여서 쓰면 안된다. (ApplicationContext 기반 - 어노테이션)
<bean id = "memberController class = com.example.demo.controller.MemberController"/>
- xml 기반(BeanFactoty기반) 같은 의미다.
ViewResolver 필요한 경우 - 페이지요청 + forward - select문
DataSet - 마임타입 - text/plain, application/json
@RestController : Front-end와 Back-End가 완전한 분리
몰랐던 부분
VO 안 VO 계층적구조를 사용하는데 문제가 있나?
-> No. 가독성문제 / 아와 같은 방식으로도 사용가능
-> 필자 Builder 도전했다가 실패... (이 부분 도전 하실 분 도전해서 해결해주세요)
Select 쿼리문을 마이바티스에서 진행하는데, 만약에 조회하는 컬럼의 개수가 VO/DTO개수와 일치하지 않는다면?
-> 없는 값들은 초기 DTO/VO 필드 전역변수로 선언된 초기값으로 설정으로 되고,
-> 나머지 조회된 값들은 매핑된다.
-> 매핑되는 순서는 바뀔 수 있다.
2-1) (헷갈렸던 부분) 서로 컬림이 일치하지 않으면 문자열이 뜨는거 아닌가요?
-> Insert/Update/Delete 에서만 이와같은 오류가 발생
2-2) SELECT 컬럼 AS ~~ 별칭을 줘서 매핑시켜도 되나요?
-> 굳이..? 그냥 써..
@RequestMapping(value=~) 이용해보기
BoardController.java
@RequestMapping(value = "boardDetail")
public String boardDetail(@RequestParam Map<String, Object> rmap, Model model) {
logger.info("boardDetail");
List<Map<String, Object>> bList = null;
bList = boardLogic.boardDetail(rmap);
model.addAttribute("bList", bList);
return "forward:./boardDetail.jsp";
}
BoardLogic.java
public List<Map<String, Object>> boardDetail(Map<String, Object> pmap) {
logger.info("boardDetail");
List<Map<String, Object>> totalList = new ArrayList<>();
List<Map<String, Object>> list = new ArrayList<>();
list = boardDao.boardList(pmap); // 리스트 결과값을 가져와서 map에 담아야함 [{}]
Map<String, Object> detailmap = list.get(0);
totalList.add(detailmap);
int result = Integer.parseInt(list.get(0).get("B_NO").toString());
String b_no = String.valueOf(result);
logger.info(b_no);
boardDao.boardUpdate(b_no);
list = boardDao.boardDetail(pmap); // 댓글처리 접근 <자손> 리스트로 반환되어 나옴
detailmap = list.get(0);
totalList.add(1, detailmap);
// detailmap = list.get(0);
// totalList.add(detailmap);
// 조회수를 수정하는 로직을 이 안에서 분리할 수 없다.
return list;
}
BoardDao.java
public List<Map<String, Object>> boardDetail(Map<String, Object> pmap) {// gubun:n_title, keyword:휴관
logger.info("boardDetail");
// JAVA -> MyBatis -> Oracle
List<Map<String, Object>> dlist = sqlSessionTemplate.selectList("boardDetail", pmap);
return dlist;
}
public void boardUpdate(String b_no) {
sqlSessionTemplate.update("boardUpdate",b_no);
}
Board.xml
<select id="boardDetail" parameterType="map" resultType = "map">
SELECT b.bc_no, b.bc_writer, b.bc_comment
FROM board230527 a, board230527_comment b
WHERE
a.b_no=b.b_no(+)
<if test="b_no!=null">
AND a.b_no=#{b_no}
</if>
</select>
<update id="boardUpdate" parameterType="String">
UPDATE board230527
SET b_hit = b_hit+1
WHERE b_no = #{b_no}
</update>
다른 방법으로 구현 하신 분 있다면 같이 공유해서 공부해요~
Test Url : http://localhost:8000/board/boardDetail?b_no=2
다음 학습 목표 계층적 vo를 통해서 구현해보자.