과자와 회사 정보 모두 가져오기 + 과자 하나 상세보기(join) (java)

2024. 6. 20. 14:27JSP+Spring Boot

SCController

 

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 org.springframework.web.bind.annotation.PathVariable;

import com.khmall.dto.SC;
import com.khmall.service.SCService;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller
public class SCController {
	
	@Autowired
	private SCService scService;
	
	// index는 기본 주소가 / 임 특별히 특정한 기능을 넣지 않으면
	// /(기본 주소) 가 index를 바라보기 때문에 작성을 생략해도 되지만
	// 특정한 값을 가져오거나 /(기본 주소)가 index 이외에 다른 html 파일을 바라 볼 때는
	// GetMapping("/") 에 기능이나 html 파일을 작성해줌
	@GetMapping("/") 
	public String getAllSC(Model model) {
		List<SC> sc = scService.getAllSC();
		log.info("모든 db값 가져오는지 확인하기 " + sc);

		model.addAttribute("snackAndCompany",sc);
		return "index";
	}
	
	@GetMapping("/snack/{snack_id}") //주소값이 변할 때는 변하는 변수를 {}로 감싸줌
	//주소값으로 id 숫자를 가져와서 주소값에 지정된 id 숫자와 일치하는 db 값을 모두 가져오기
	public String getSnackById(Model model, @PathVariable int snack_id ) {
		// 주소값으로 설정한 id를 받아오고 scservice에 전달해서 DB에서 꺼내오기 작업
		SC sc = scService.getSnackById(snack_id);
		model.addAttribute("snack", sc);
		return "snackDetail";
	}
	
}

 

-------------------------------------------------------------------------------------------------

 

SC (DTO)

package com.khmall.dto;

import lombok.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
//@ToString
public class SC {
	private int snack_id;
	private String snack_name;
	private int price;
	
	// mappers 폴더 안에 있는  xml에 작성한 join문에서 
	// Snacks 테이블에 있는 company_id와 Company 테이블에 있는 company_id
	// 와 서로 의미하는 바와 값이 일치할 경우 Company 테이블에 있는 
	// company_name과 company_phone 가지오겠다.
	private String company_name;
	private String company_phone;
	private String company_address;
}

 

-----------------------------------------------------------------------------------------------------------

SCMapper

 

package com.khmall.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.khmall.dto.SC;

@Mapper
public interface SCMapper {
	//getAllSC 로 가져온 select join문을 보여주기
	List<SC> getAllSC();
	
	// 위에서는 모든 제품을 가져오기 때문에 List를 작성했지만
	// 아래는 하나의 값만 가져오기 때문에 List를 없애준 것
	// snack_id에 해당하는 값을 가져오겠다. 표기
	SC getSnackById(int snack_id);
}

 

---------------------------------------------------------------------------------------------------------------------

 

SCService

 

package com.khmall.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.khmall.dto.SC;
import com.khmall.mapper.SCMapper;

@Service
public class SCService {
	@Autowired
	private SCMapper scmapper;
	
	public List<SC> getAllSC(){
		return scmapper.getAllSC();
	}
	
	//getSnackById
	
	public SC getSnackById(int snack_id){
		return scmapper.getSnackById(snack_id);
	}
}