2024. 6. 20. 13:51ㆍJSP+Spring Boot
snack-mapper
<?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로 sql 코드 감쌀 때 ; 사용 x -->
<mapper namespace="com.khmall.mapper.SnackMapper">
<select id="getAllSnacks" resultType="com.khmall.dto.Snacks">
select s.snack_id, s.snack_name, s.price, s.company_id, c.company_name, c.company_phone
from snacks s, company c
where s.company_id = c.company_id
</select>
</mapper>
namespace : 해당 java 파일로 sql 구문을 전송한다는 의미. 주로 interface.
테이블명Mapper.java 파일 -> 주로 이런식으로 Mapper 파일의 이름을 지음
Mapper로 sql에 작성한 기능을 전송하기 위해 전송할 아이디 값을 id에 적어줌
작성해서 db에서 가져온 과자리스트 결과를 Snacks.java 파일에 Getter, Setter로 저장해서 사용자 화면에 보여주는 것을 resultType에 전송
* resultType : db에서 가져온 결과들을 저장하는 공간
------------------------------------------------------------------------------------------------------------------------
SnackMapper
package com.khmall.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.khmall.dto.Snacks;
@Mapper//spring 자체에서 Mapper 인터페이스는 sql db에 작성한 코드를 바라보는 위치임을 뜻하며
//@Mapper 어노테이션을 통해 이 Mapper는 sql 구문을 바라본다는 의미를 가짐
public interface SnackMapper {
// db에서 모든 과자들을 가져올 수 있도록 진열목록을 작성
List<Snacks> getAllSnacks();
}
--------------------------------------------------------------------------------------------------------------------------
Snack (DTO)
package com.khmall.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Snacks {
private int snack_id;
private String snack_name;
private int price;
private int company_id;
private String company_name;
private String company_phone;
}
--------------------------------------------------------------------------------------------------------------------
SnackService
package com.khmall.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.khmall.dto.Snacks;
import com.khmall.mapper.SnackMapper;
//Controller에서 가져오거나 db에서 가져온 값에 추가적인 기능을 작성
@Service
//@Service : db에서 가져온 sql 구문이나 html에서 db에 넣어줄 값에 추가적인 서비스를 적용한다는 의미
public class SnacksService {
//Mapper에 작성한 리스트를 모두 활용 -> @Autowired
//객체 안의 한 줄씩 참조할 때 작성
@Autowired
private SnackMapper snackMapper;
public List<Snacks> getAllSnacks(){
//상품목록을 보여줄 때 추가적으로 설정해서 넣고싶은 기능을 나중에 추가적으로 작성
// 상품 이미지가 있는지 확인하고 없으면 x박스로 하거나 이외 여러가지 기능을 작성
return snackMapper.getAllSnacks();
}
}
-----------------------------------------------------------------------------------------------------------------------
SnackController
package com.khmall.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import com.khmall.dto.Snacks;
import com.khmall.service.SnacksService;
//Service에 작성한 기능을 종합해서 db와 html을 연결
@Controller
public class SnacksController {
@Autowired//SnacksService에 작성된 모든 기능활용(의존성 주입)
private SnacksService snackService;
@GetMapping("/allSnack")
public String getAllSnacks(Model model) {
//스낵서비스에서 추가적인 서비스 기능으로 다듬어진 메서드 가져오기
List<Snacks> snackList = snackService.getAllSnacks();
//th:each문에서 ${snackList}로 작성했으므로
//html에 전달할 목록들을 "" 안의 snackList라는 변수명으로 전달
//Model은 db에서 가져온 값을 전달해주는 연결고리
model.addAttribute("snackList",snackList);
return "snackList";
//return "스낵리스트가 작성된 html파일명";
}
}
--------------------------------------------------------------------------------------------------------------------------
index
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>과자 모두 보기</title>
</head>
<body>
<div clas="container">
<h1>과자 모두 보기</h1>
<!-- db에 만들어둔 과자를 모두 가져와서 보기 -->
<a href="/allSnack">과자 모두 보러 가기</a><br>
<a href="/allCompany">회사 모두 보러 가기</a>
<a href="/allkhMember">회원 모두 보기</a>
</div>
</body>
</html>
------------------------------------------------------------------------------------------------------------------------
snackList
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>snackList</title>
</head>
<body>
<h1>과자 리스트</h1>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>과자명</th>
<th>가격</th>
<th>회사코드</th>
<th>회사명</th>
<th>회사 번호</th>
</tr>
</thead>
<tbody>
<tr th:each="s: ${snackList}">
<td th:text="${s.snack_id}"></td>
<td th:text="${s.snack_name}"></td>
<td th:text="${s.price}"></td>
<td th:text="${s.company_id}"></td>
<td th:text="${s.company_name}"></td>
<td th:text="${s.company_phone}"></td>
</tr>
</tbody>
</table>
<a href="/">메인으로 돌아가기</a>
</body>
</html>
'JSP+Spring Boot' 카테고리의 다른 글
과자와 회사 정보 모두 가져오기 + 과자 하나 상세보기(join) (java) (0) | 2024.06.20 |
---|---|
과자와 회사 정보 모두 가져오기 + 과자 하나 상세보기(join) (resources) (0) | 2024.06.20 |
상품 등록 폼 만들기(resources 파일)(insert) (0) | 2024.06.17 |
상품등록 폼 만들기(Java 파일)(insert) (0) | 2024.06.17 |
Thymeleaf(inline, classappend), sequence (0) | 2024.06.14 |