2024. 6. 20. 13:59ㆍJSP+Spring Boot
snackAndCompany.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper 로 insert select update delete 감싸서 보낼 Mapper.java 경로 설정 -->
<mapper namespace="com.khmall.mapper.SCMapper">
<!-- 제품과 회사명 모두 보는 join select 문 -->
<select id="getAllSC" resultType="com.khmall.dto.SC">
SELECT s.snack_id, s.snack_name, s.price, c.company_name, c.company_phone, c.company_address
FROM snacks s, company c
WHERE s.company_id = c.company_id
</select>
<select id="getSnackById" resultType="com.khmall.dto.SC" parameterType="int">
SELECT * FROM snacks
WHERE SNACK_ID = #{snack_id}
<!-- 소비자가 원하는 제품 상세페이지를 클릭하면 해당하는 제품의 아이디값을 가져와서
아이디값과 일치하는 데이터를 모두 가져옴
-->
</select>
<!--
SELECT s.snack_id, s.snack_name, s.price, c.company_name, c.company_phone, c.company_address
FROM snacks s, company c
WHERE s.company_id = c.company_id
AND SNACK_ID = #{snack_id}
join과 where을 통해 어떤 값을 찾을 때 AND 문을 사용할 수 있다.
-->
</mapper>
**제품 상세페이지에 보여줄 select 문
where 문을 사용해서 특정 변수값을 가지고 올 때 변수값이 String인지 int인지 float 등 어떤 타입인지를 지정하고 알려줘야 함.사용자한테 값을 전달받아 db에서 확인하거나 db에 저장할 때는 parameterType 이라는 것을 사용
resultMap 사용하게 되면 parameterType 사용하지 않아도 됨.
-> DTO와 DB가 각각 어떤 타입을 가지고 변수명을 사용하는지 서로 매칭시켜놓은 공간이 있기 때문
--------------------------------------------------------------------------------------------------------------------------
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>join 문을 활용해서 select 하기</title>
</head>
<body>
<h1>Join을 활용해서 select 하기</h1>
<table border="1">
<thead>
<tr>
<th>과자명</th>
<th>가격</th>
<th>회사명</th>
<th>회사번호</th>
<th>회사주소</th>
<th>과자상세페이지로이동하기</th>
</tr>
</thead>
<tbody>
<tr th:each=" sac : ${snackAndCompany}">
<td th:text="${sac.snack_name}"></td>
<td th:text="${sac.price}"></td>
<td th:text="${sac.company_name}"></td>
<td th:text="${sac.company_phone}"></td>
<td th:text="${sac.company_address}"></td>
<td>
<a th:href="@{'/snack/' + ${sac.snack_id}}"> 이동하기</a>
<!-- sql에서 시작하는 id값이 1번부터인데 0이 뜬다.
값을 가져오지 못한 것 0 = null
-->
</td>
</tr>
</tbody>
</table>
</body>
</html>
Mapper.xml 파일에 sql에서 정상적으로 작동하는 join문을 xml 파일에 ";" 을 제외하고 그대로 추가하면 정상적으로 작동이 가능
select의 경우에는 값을 sql db에서 정상적으로 가져오지 않아도 에러가 발생하거나 select에서 가져오는 db 내용물만 보이지 않을 뿐이지 왜 안보이는지 알 수 없으므로 controller에서 Slf4j 어노테이션과 dto에서 toString 어노테이션을 활용해서 값을 정상적으로 가져오는지 확인할 수 있음
--------------------------------------------------------------------------------------------------------------------
snackDetail.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>과자 상세페이지</title>
</head>
<body>
<h1>index에서 제품리스트를 클릭했을 때 넘어오는 상세 페이지</h1>
<div>
<h1>제품 상세정보에 조인 회사 정보</h1>
<h3 th:text="${snack.snack_name}"></h3>
<h3 th:text="${snack.price}"></h3>
<!-- join 문 활용해서 회사정보도 상세페이지에서 함께 보여주기 -->
</div>
</body>
</html>
-------------------------------------------------------------------------------------------------------------------
'JSP+Spring Boot' 카테고리의 다른 글
이미지 파일 불러오기(select-image)(java) (0) | 2024.06.20 |
---|---|
과자와 회사 정보 모두 가져오기 + 과자 하나 상세보기(join) (java) (0) | 2024.06.20 |
DB 테이블에 있는 값 불러오기(select) (0) | 2024.06.20 |
상품 등록 폼 만들기(resources 파일)(insert) (0) | 2024.06.17 |
상품등록 폼 만들기(Java 파일)(insert) (0) | 2024.06.17 |