기존에 제목1만 활성화 되어있던 페이지 4페이지까지 활성화 하기
BoardController
@GetMapping("/board/1")
public String detail() {
return "board/detail";
}
@GetMapping("/board/{id}")
public String detail(@PathVariable int id) {
System.out.println("id : "+id);
return "board/detail";
작성자 넣기
detail.mustache
<div class="d-flex justify-content-end mt-2">
<b>작성자</b> : ssar
</div>

qlrm 넣기
// https://mvnrepository.com/artifact/org.qlrm/qlrm
implementation group: 'org.qlrm', name: 'qlrm', version: '4.0.1'

오류난 부분 다시 import 하기(alt + enter)
File - project structure 21로 바꾸기

작성자 username 으로 받아오기
BoardResponse class 작성
package shop.mtcoding.blog.board;
import lombok.Data;
import java.sql.Timestamp;
public class BoardResponse {
// bt.id, bt.content, bt.title, bt.created_at, ut.id uid, ut.username
@Data
public static class DetailDTO {
private int id;
private String title;
private String content;
private int userId;
private String username;
private Timestamp createdAt;
}
}
BoardRepository
public BoardResponse.DetailDTO findById(int id) {
// Entity가 아닌것은 jpa가 파싱 안해준다.
Query query = em.createNativeQuery("select bt.id, bt.content, bt.title, bt.created_at, ut.user_id uid, ut.username from board_tb bt inner join user_tb ut on bt.user_id = ut.id where bt.id = ?");
query.setParameter(1, id);
JpaResultMapper rm = new JpaResultMapper();
BoardResponse.DetailDTO responseDTO = rm.uniqueResult(query, BoardResponse.DetailDTO.class);
return responseDTO;
}
}
BoardController
@GetMapping("/board/{id}")
public String detail(@PathVariable int id, HttpServletRequest request) {
BoardResponse.DetailDTO responseDTO = boardRepository.findById(id);
request.setAttribute("board", responseDTO);
return "board/detail";
}
detail.mustache
</div>
<div class="d-flex justify-content-end mt-2">
<b>작성자</b> : {{board.username}}
</div>
나타날 수 있는 오류

public BoardResponse.DetailDTO findById(int id) {
// Entity가 아닌것은 jpa가 파싱 안해준다.
Query query = em.createNativeQuery("select bt.id, bt.title, bt.content, bt.created_at, ut.username from board_tb bt inner join user_tb ut on bt.user_id = ut.id where bt.id = ?");
query.setParameter(1, id);
JpaResultMapper rm = new JpaResultMapper();
BoardResponse.DetailDTO responseDTO = rm.uniqueResult(query, BoardResponse.DetailDTO.class);
return responseDTO;
}
DB에서 들고 온 정보는 다섯개 인데
public static class DetailDTO {
private Integer id;
private String title;
private String content;
private Timestamp createdAt;
private Integer userId;
private String username;
}
BoardResponse에 있는 정보는 6개라서 발생한 오류
수정 삭제 버튼 안보이기
로그인을 안하면 안보임
BoardController
// 해당 페이지의 주인 여부
boolean owner = false;
// 작성자 userId 확인하기
int boardUserId = responseDTO.getUserId();
// 로그인 여부 체크
User sessionUser = (User) session.getAttribute("sessionUser");
if (sessionUser != null ) { // 로그인 했음
if(boardUserId == sessionUser.getId()) {
owner = true;
}
}
request.setAttribute("owner", owner);
return "board/detail";
Share article