어디서 확인할 수 있나? 관련 의존성 : org.springframework.boot:spring-boot-starter-web
스프링에서 ViewResolver 클래스는 왜 필요한가? 현재는 페이지 구현이 적은 상황이지만 나중에 30개의 페이지가 생길 때는?
그렇기 때문에 각 관심사의 분리가 필요하다.
@RestController : 둘의 분리를 도와주는 어노테이션 -> return : String temp = g.toJson(XXXList)
@RequestParam - React 사용 시 필요!
- 받아오는 값은? js 언어이다. (apllication/json)
- const notice = {이름 : 값, 이름1 : 값1, 이름2 : 값2 ...} -> 이 부분이 Front-Back의 만나는 부분
@Controller : InternalVewResolver -> return : String(화면이름)
webapp
WEB-INF
DB설계 -> xml 작성 -> Dao, Logic, Controller 작성
@Service, @Component
- @Component는 빈을 등록해서 주입받아야 할 클래스
상세보기, 댓글을 하나의 List에 담을 수 있나? No, 다른 테이블에서 가져오고, 댓글의 갯수를 확정할 수 없으니까!!
상세보기 & 댓글의 구조!!
[
{}, //bList.get(0)
{ //bList.get(1)_
comments: [
{},
{},
...
]
}
]
List<Map<String,Object>> bList = new ArrayList<>();
bList.size()= 2
Map<String, Object> detail = bList.get(0);
Map = bList=get(1);
공통되는 b_no가 있지만, 댓글이 있을 수도 있지만 댓글이 없는 게시글이 있을 수도 있으니까 적절한 join을 사용한다.
상세보기 & 댓글이 표시되는 화면에서 사용할 거여서 natural join, outer join 모두 사용 가능하다!
우리는 일단, natural join을 사용하여 공통으로 들어가는 b_no에 대해 같은 값을 갖는 테이블을 select 할 수 있도록 board.xml에 select를 아래와 같이 추가하였다.
<select id="commentList" parameterType="map" resultType="map">
select bc_no, bc_comment, bc_writer
from board230527_comment NATURAL JOIN board230527
where b_no= #{b_no}
order by bc_no desc;
</select>