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

2024. 6. 17. 14:05JSP+Spring Boot

Mapper.xml

 

mapper로 감쌀 SQL문은 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">
        
<!-- namespace를 이용해서 java에 mapper sql 실행할 id를 작성할 java 파일위치 작성 -->
<!-- GoodsMapper에 goods테이블과 관련된 모든 id 작성 -->
<mapper namespace="com.example.demo.mapper.GoodsMapper">

	<!-- sql에 값을 넣을 때 java에서 참조할 변수명 위치를 가져오기 위해
	 parameterType에 해당 변수명이 있는 위치 작성 -->
	<!-- 작성한 id는 Mapper, Service, Controller에서 모든 메서드명으로 통일해서 작성 -->
	<insert id="insertGoods" parameterType="com.example.demo.dto.Goods">
	
	<!-- sql에 작성할 테이블 id, name, price, quantity -->
	INSERT INTO goods (goods_id, goods_name, goods_price, goods_quantity)
    
	<!-- #{dto.Goods에 적은 변수명}과 sql에 연결할 컬럼명 각각 작성하기 -->
		VALUES(goods_seq.NEXTVAL, 
		#{goodsName}, 
		#{goodsPrice}, 
		#{goodsQuantity})
	</insert>
</mapper>

 

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

 

index

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>상품 등록하기</title>
</head>
<body>
    <h1>상품 등록하기</h1>
    
    <form th:action="@{/register}" method="post" th:object="${goods}">
    <!-- goods_id 값은 db에서 nextValue로 자동으로 증가하게 설정했기 떄문에 form에서 작성 x -->
    
    <!-- th:field="*{}" -> *는 th:object 값을 가져온다는 뜻 -->
    상품명 : <input type="text" th:field="*{goodsName}"><br>
    상품가격 : <input type="number" th:field="*{goodsPrice}"><br>
    상품수량 : <input type="number" th:field="*{goodsQuantity}"><br>
	<button>제출하기</button>
    </form>
</body>
</html>

 

Controller에서 model.addAttribute("goods", new Goods()); :: html에 goods라는 이름으로 전달한다고 작성했기 때문에 th:object="${goods}"를 이용해 나머지 input에는 goods를 사용하지 않고 바로 dto에 작성한 변수명을 써주면 됨

만약 th:object="${goods}"를 써주지 않으면 goods.goodsName 식으로 적어주면 됨

input에 있는 값을 dto에 있는 변수명에 넣어주기 때문에, th:field 라는 이름을 써서 일치하는 필드명(=변수명)에 고객이 작성한 값을 넣어주겠단 표기

 

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

 

registerSuccess

 

등록이 성공적으로 되면 나타날 페이지 작성

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>상품 등록 완료</title>
</head>
<body>
    <h1 th:text="${msg}"></h1>
</body>
</html>

 

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

 

input 태그에 입력
input 성공시 register 창으로 넘어감

 

DB에 값이 들어간 것을 확인