アプリケーション映画/レビュー項目-(4)
ページと映画のコメントを参照
MovieServiceとMovieServiceImpl
//조회처리
MovieDTO readMovie(Long mno);
@Override
public MovieDTO getMovie(Long mno) {
List<Object[]> result = movieRepository.getMovieWithAll(mno);
Movie movie =(Movie)result.get(0)[0];
//Movie 엔티티는 가장 앞에 존재(모든 Row가 동일한 값을 가집니다.)
List<MovieImage>movieImageList = new ArrayList<>();
//영화의 이미지 개수 만큼 MovieImage객체 필요
result.forEach(arr ->{
MovieImage movieImage = (MovieImage)arr[1];
movieImageList.add(movieImage);
});
Double avg = (Double) result.get(0)[2];
//평균 평점 - 모든 Row가 동일한 값
Long reviewCnt = (Long)result.get(0)[3];
//리뷰 개수 - 모든 Row가 동일한 값
return entityToDto(movie,movieImageList,avg,reviewCnt);
}
MovieControllerとRead。html
@GetMapping({"/read","/modify"})
public void read(long mno, @ModelAttribute("pageRequestDTO")PageRequestDTO pageRequestDTO,Model model){
MovieDTO movieDTO = movieService.getMovie(mno);
model.addAttribute("dto",movieDTO);
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="~{/layout/basic :: setContent(~{this::content} )}">
<th:block th:fragment="content">
<h1 class="mt-4">Movie Read Page</h1>
<div class="form-group">
<label>Title</label>
<input type="text" class="form-control" name="title" th:value="${dto.title}" readonly>
</div>
<div class="form-group">
<lable>Review Count</lable>
<input type="text" class="form-control" name="reviewCnt" th:value="${dto.reviewCnt}" readonly>
</div>
<div class="form-group">
<label>AVG</label>
<input type="text" class="form-control" name="avg" th:value="${dto.avg}" readonly>
</div>
<style>
.uploadResult {
width: 100%;
background-color: gray;
margin-top: 10px;
}
.uploadResult ul {
display: flex;
flex-flow: row;
justify-content: center;
align-items: center;
vertical-align: top;
overflow: auto;
}
.uploadResult ul li {
list-style: none;
padding: 10px;
margin-left: 2em;
}
.uploadResult ul li img {
width: 100px;
}
</style>
<div class="uploadResult">
<ul>
<li th:each="movieImage : ${dto.imageDTOList}">
<img th:if="${movieImage.path != null}" th:src="|/display?fileName=${movieImage.getThumbnailURL()}|">
</li>
</ul>
</div>
<button type="button" class="btn btn-primary">Review Count
<span class="badge badge-light">[[${dto.reviewCnt}]]</span>
</button>
<script>
</script>
</th:block>
</th:block>
</html>
Reference
この問題について(アプリケーション映画/レビュー項目-(4)), 我々は、より多くの情報をここで見つけました https://velog.io/@jyyoun1022/영화리뷰-프로젝트-적용하기-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol