CONTROLLER -> SERVICE -> DAO -> DB
DB-> DAO -> SERVICE -> CONTROLLER
book_SQL.xml
SELECT문 추가
<select id="select_detail" parameterType="hashMap" resultType="hashMap">
<![CDATA[
SELECT title, category, price, insert_date
FROM book
WHERE book_id = #{bookId}
]]>
</select>
bookDAO - selectDetail 메서드 추가
package com.demo.sample;
import java.util.Map;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class BookDAO {
//자동으로 등록된 객체를 주입
@Autowired
SqlSessionTemplate sqlSessionTemplate;
public int insert(Map<String, Object> map) {
return sqlSessionTemplate.insert("book.insert", map);
}
public Map<String, Object> selectDetail(Map<String, Object> map){
return sqlSessionTemplate.selectOne("book.select_detail",map);
}
}
MAP으로 입력하고 MAP으로 가져온다.
BookServiceImple - selectDetail 추가
package com.demo.sample;
import java.util.Map;
@Service
public class BookServiceImple implements BookService{
@Autowired
BookDAO bookDao;
@Override
public String create(Map<String, Object> map) {
int affectRowCount = this.bookDao.insert(map);
if (affectRowCount == 1) {
//정상적으로 테이블에 입력 후 book_id를 리턴함. 1개가 들어간게 정상
return map.get("book_id").toString();
}
return null; //에러
}
@Override
public Map<String, Object> detail(Map<String, Object> map){
return bookDao.selectDetail(map);
}
}
추상메서드 자동 추가하기
package com.demo.sample;
import java.util.Map;
public interface BookService {
String create(Map<String, Object> map);
Map<String, Object> detail(Map<String, Object> map);
}
BookController- detail 추가
@GetMapping("/detail")
public String detail(@RequestParam Map<String, Object> map, Model model) {
Map<String, Object> detailMap = bookService.detail(map);
//화면에 데이터를 전달하기 위해 Model 객체를 이용한다.
model.addAttribute("data", detailMap);//data라는 이름으로 전달(requset와 동일)
String bookId = map.get("bookId").toString();
model.addAttribute("bookId", bookId);
return"/book/detail";
}
}
detail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>책 상세 페이지</title>
</head>
<body>
<h1>책 상세</h1>
<p>제목 : ${ data.title } </p>
<p>카테고리 : ${ data.category }</p>
<p>가격 : <fmt:formatNumber type="number" maxFractionDigits="3" value="${data.price}" /></p>
<p>입력일 : <fmt:formatDate value="${data.insert_date}" pattern="yyyy.MM.dd HH:mm:ss" /></p>
<p>
<a href="/update?bookId=${bookId}">수정</a>
</p>
<form method="POST" action="/delete">
<input type="hidden" name="bookId" value="${bookId}" />
<input type="submit" value="삭제" />
</form>
<p>
<a href="/list">목록으로</a>
</p>
</body>
</html>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
즉 fmt를 사용하여 format 설정이 가능하다.
<p>가격 : <fmt:formatNumber type="number" maxFractionDigits="3" value="${data.price}" /></p>
price숫자의 3번째에 콤마 찍어준다.
<p>입력일 : <fmt:formatDate value="${data.insert_date}" pattern="yyyy.MM.dd HH:mm:ss" /></p>
날짜 형식을 해당 패턴대로 사용한다
'BACKEND > Spring' 카테고리의 다른 글
DB연결 - 책 삭제하기 (DELETE) (0) | 2023.10.20 |
---|---|
DB연결 - 책 수정 화면 (UPDATE) (0) | 2023.10.20 |
DB연결 - 책 입력 기능(INSERT) (0) | 2023.10.19 |
LegacyProject 시작하기 , DB 연결을 위한 라이브러리 추가 (1) | 2023.10.19 |
레거시 프로그램 설치 및 기본 설정 (0) | 2023.10.19 |