2025-02-03










<!-- lombok 라이브러리 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
<scope>provided</scope>
</dependency>
<!-- spring-jdbc 라이브러리 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- mybatis framework 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mybatis-spring 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="gray">
<h3>PRODUCTS 테이블 제품 전체 리스트 페이지</h3>
<hr width="30%" color="gray">
<br> <br>
<table border="1" width="500">
<tr>
<th>제품 No.</th> <th>제품명</th> <th>입고가</th> <th>판매가</th>
<th>제조사</th>
</tr>
<c:set var="list" value="${List }" />
<c:if test="${!empty list }">
<c:forEach items="${list }" var="dto">
<tr>
<td>${dto.pnum }</td>
<td>
<a href="<%=request.getContextPath() %>/product_content.go?pnum=${dto.pnum }">
${dto.products_name }</a>
</td>
<td>
<fmt:formatNumber value="${dto.input_price }" /> 원
</td>
<td>
<fmt:formatNumber value="${dto.output_price }" /> 원
</td>
<td>${dto.company }</td>
</tr>
</c:forEach>
</c:if>
<c:if test="${empty list }">
<tr>
<td colspan="5" align="center">
<h3>제품 전체 목록이 없습니다...</h3>
</td>
</tr>
</c:if>
</table>
<br> <br>
<input type="button" value="제품등록"
onclick="location.href='product_insert.go'">
</div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="productDao"> <!-- mybatis-config에서 설정한 별칭 입력 -->
<select id="list" resultType="productDto">
select * from products order by pnum desc
</select>
<select id="category" resultType="categoryDto">
select * from category order by cnum desc
</select>
<insert id="add" parameterType="productDto">
insert into products values(
(select max(pnum) from products) + 1, #{category_fk}, #{products_name},
#{ep_code_fk}, #{input_price}, #{output_price}, #{trans_cost},
#{mileage}, #{company})
</insert>
<select id="getProduct" parameterType="int" resultType="productDto">
select * from products where pnum = #{pnum}
</select>
<update id="edit" parameterType="productDto">
update products set input_price = #{input_price}, output_price = #{output_price},
trans_cost = #{trans_cost}, mileage = #{mileage}, company = #{company} where pnum = #{pnum}
</update>
<delete id="del" parameterType="int">
delete from products where pnum = #{pnum}
</delete>
<!--
형식) <![CDATA[쿼리문]]>
- 쿼리문 작성할 때 조건식 기호(<, >, &)를 사용하는 경우
XML에서는 이러한 기호들을 쿼리문의 조건식 기호로 인식하는 것이 아닌
단순한 태그로 인식하는 경우가 발생.
이런 경우에는 에러가 발생함. 따라서 조건식 기호들을 단순한 문자열로
인식을 시켜주어야 할 때 사용하는 문장.
-->
<update id="seq" parameterType="int">
<![CDATA[update products set pnum = pnum - 1 where pnum > #{pnum}]]>
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.spring.model.ProductDAO" alias="productDao" />
<typeAlias type="com.spring.model.ProductDTO" alias="productDto" />
<typeAlias type="com.spring.model.CategoryDTO" alias="categoryDto" />
</typeAliases>
</configuration>
package com.spring.product;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.spring.model.CategoryDTO;
import com.spring.model.ProductDAO;
import com.spring.model.ProductDTO;
@Controller
public class ProductController {
@Autowired
private ProductDAO dao;
@RequestMapping("product_list.go")
public String list(Model model) {
List<ProductDTO> list = this.dao.getProductList();
model.addAttribute("List", list);
return "product_list";
}
@RequestMapping("product_insert.go")
public String insert(Model model) {
// 제품 카테고리 코드 목록을 조회하여 제품 등록 폼 페이지로 이동
List<CategoryDTO> categoryList = this.dao.getCategoryList();
model.addAttribute("CategoryList", categoryList);
return "product_insert";
}
@RequestMapping("product_insert_ok.go")
public void insertOk(ProductDTO dto,
HttpServletResponse response) throws IOException {
int chk = this.dao.insertProduct(dto);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if (chk > 0) {
out.println("<script>");
out.println("alert('제품 등록 성공')");
out.println("location.href='product_list.go'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('제품 등록 실패')");
out.println("history.back()");
out.println("</script>");
}
}
@RequestMapping("product_content.go")
public String getProduct(@RequestParam("pnum") int pnum, Model model) {
ProductDTO cont = this.dao.getProduct(pnum);
model.addAttribute("Content", cont);
return "product_content";
}
@RequestMapping("product_modify.go")
public String modify(@RequestParam("pnum") int pnum, Model model) {
ProductDTO dto = this.dao.getProduct(pnum);
model.addAttribute("Modify", dto);
return "product_modify";
}
@RequestMapping("product_modify_ok.go")
public void modifyOk(ProductDTO dto, HttpServletResponse response) throws IOException {
int chk = this.dao.updateProduct(dto);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if (chk > 0) {
out.println("<script>");
out.println("alert('제품 수정 성공')");
out.println("location.href='product_content.go?pnum=" + dto.getPnum() + "'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('제품 수정 실패')");
out.println("history.back()");
out.println("</script>");
}
}
@RequestMapping("product_delete.go")
public void delete(@RequestParam("pnum") int pnum, HttpServletResponse response) throws IOException {
int chk = this.dao.deleteProduct(pnum);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if (chk > 0) {
// 삭제된 제품번호에 대해서 번호 재작업을 해주는 메서드 호출
this.dao.updateSequence(pnum);
out.println("<script>");
out.println("alert('제품 삭제 성공')");
out.println("location.href='product_list.go'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('제품 삭제 실패')");
out.println("history.back()");
out.println("</script>");
}
}
}'Spring, Boot > 기초 내용 정리' 카테고리의 다른 글
| Spring(FileUpload)_01 (0) | 2025.02.06 |
|---|---|
| Spring(MyBatis)_04 (0) | 2025.02.05 |
| Spring(MyBatis)_02 (0) | 2025.02.05 |
| Spring(MyBatis)_01 (0) | 2025.02.05 |
| Spring(MyBatis)_00 (1) | 2025.02.05 |