Spring(MyBatis)_03

2025. 2. 5. 17:27·Spring, Boot/기초 내용 정리

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
'Spring, Boot/기초 내용 정리' 카테고리의 다른 글
  • Spring(FileUpload)_01
  • Spring(MyBatis)_04
  • Spring(MyBatis)_02
  • Spring(MyBatis)_01
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Spring(MyBatis)_03
상단으로

티스토리툴바