상품등록 폼 만들기(Java 파일)(insert)

2024. 6. 17. 12:43JSP+Spring Boot

 

Cotroller

package com.example.demo.controller;

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.PostMapping;

import com.example.demo.dto.Goods;
import com.example.demo.service.GoodsService;

@Controller
//class 명을 Controller로 작성하면 Spring 내부에 있는 Controller와 충돌이 발생.
public class GoodsController {

	@GetMapping("/")//맨 앞 페이지에서 볼 화면 띄우기
	public String registerForm(Model model) {
		//db에 값을 넣을 수 있도록 new Goods()를 이용해서 값이 들어갈 공간을 비운채 만들어주기
		model.addAttribute("goods", new Goods());
		return "index";
	}
	
	//GoodsService에 숫자값이 아니면 들어가지 못하게 방지하거나, 
	//비밀번호 암호화 설정같은 상세기능을 넣고
	//service를 호출해서 mapper java파일에 값을 전달할 수 있도록 작성
	@Autowired
	private GoodsService goodsService;
	
	@PostMapping("/register")
	public String insertGoods(Goods goods, Model model) {

		goodsService.insertGoods(goods);
		//log
		model.addAttribute("msg", "상품이 성공적으로 등록되었습니다.");
		
		return "registerSuccess";
	}
}

 

** registerForm 메서드 안의 매개변수

Goods goods : html form에 name으로 시작하는 변수명이 있으면 Goods.java의 변수명과 form에 적은 name값이 일치할 경우 자동으로 Goods.java에 일치하는 변수명에 form에 작성한 값이 임시저장(할당됨)

Model model : 돌아가기를 하거나 새로고침 기능을 사용할 경우 html 파일에 데이터를 다시 전달해주는 역할
-> 또 다른 의미로 임시저장

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

 

DTO

package com.example.demo.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Goods {
	
	private int goodsId;
	private String goodsName;
	private int goodsPrice; 
	private int goodsQuantity;
}

 

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

 

 

Mapper

package com.example.demo.mapper;

import org.apache.ibatis.annotations.Mapper;

import com.example.demo.dto.Goods;

@Mapper //sql 사용할 리스트 목록
public interface GoodsMapper {
	
	void insertGoods(Goods goods);
}

 

** ! 기능을 상세하기 적기 위한 공간이 아님 ! 

Mapper.xml에 작성한 id 리스트를 작성하는 공간이기 때문에 interface로 작성.
mapper.xml에 어떠한 파일이 존재하는지 리스트 작성
@Mapper 어노테이션을 활용해서 SpringBoot가 Mapper를 찾을 수 있도록 설정

 

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

 

Service

package com.example.demo.service;

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

import com.example.demo.dto.Goods;
import com.example.demo.mapper.GoodsMapper;

@Service
public class GoodsService {
	
	@Autowired // 없으면 하나하나 Mapper 위치랑 Service 위치를 설정하는 Context xml 파일을 만들어줘야함
	private GoodsMapper goodsMapper;
	
	public void insertGoods(Goods goods) {
		goodsMapper.insertGoods(goods);
	}
}