VO
EmpVO.java
package kr.or.ddit.vo;
import java.util.List;
import lombok.Data;
@Data
public class EmpVO {
private int empNum;
private String nm;
private String addr;
private String pne;
private int sal;
private String pnum;
private String detAddr;
private List<PerSerVO> PerSerVOList;
}
CustVO.java
package kr.or.ddit.vo;
import java.util.List;
import lombok.Data;
@Data
public class CustVO {
private int custNum;
private String custNm;
private String addr;
private String pne;
private String pnum;
private String detAddr;
private List<CarVO> carVOList;
private List<PerSerVO> perSerVOList;
}
CarVO.java
package kr.or.ddit.vo;
import java.util.List;
import lombok.Data;
@Data
public class CarVO {
private String carNum;
private String mfr;
private int myr;
private int drvDst;
private int custNum;
private List<PerSerVO> perSerVOList;
}
PerSerVO.java
package kr.or.ddit.vo;
import lombok.Data;
@Data
public class PerSerVO {
private int empNum;
private int custNum;
private String carNum;
private int amt;
private int perTme;
private int serNum;
}
WEB-INF/mybatisAlias/mybatisAlias.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
[마이바티스] 스프링에서 "_"를 사용한 컬럼명을 사용 시(BOOK 테이블의 BOOK_ID)
카멜케이스로 읽어줌(bookId)
ex) 테이블 컬러명이 member_id인 경우 jsp화면단에서 이 값을 사용 시 memberId로 사용
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 자주 사용하는 타입의 별칭을 세팅 -->
<typeAliases>
<typeAlias type="kr.or.ddit.vo.EmpVO" alias="empVo" />
<typeAlias type="kr.or.ddit.vo.CustVO" alias="custVo" />
<typeAlias type="kr.or.ddit.vo.CarVO" alias="carVo" />
<typeAlias type="kr.or.ddit.vo.PerSerVO" alias="perSerVo" />
</typeAliases>
</configuration>
Controller
EmpController.java
package kr.or.ddit.controller;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import kr.or.ddit.vo.EmpVO;
import lombok.extern.slf4j.Slf4j;
@Controller
@RequestMapping("/emp")
@Slf4j
public class EmpController {
/**
* 직원 목록
* 요쳥 URI : /emp/list
* 요청 파라미터 :
* 요청 방식 : get
*/
@GetMapping("/list")
public String empList(Model model) {
// List<EmpVO> list = this.service
return "emp/list";
}
/**
* 직원 등록폼
* 요쳥 URI : /emp/regist
* 요청 파라미터 :
* 요청 방식 : get
*/
@GetMapping("/regist")
public String empRegist() {
return "emp/regist";
}
/**
* 직원 등록실행
* 요쳥 URI : /emp/registPost
* 요청 파라미터 : EmpVO
* 요청 방식 : post
*/
@PostMapping("/registPost")
public String registPost(@ModelAttribute EmpVO empVo) {
log.info("registPost -> empVO : "+empVo);
return "redirect: /emp/detail?empNum="+empVo.getEmpNum();
}
/**
* 직원 상세보기
* 요쳥 URI : /emp/detail
* 요청 파라미터 : empNum=
* 요청 방식 : get
*/
@GetMapping("/detail")
public String detail(@RequestParam("empNum") int empNum) {
log.info("detail > empNum : "+empNum);
return "emp/detail";
}
/**
* 직원 수정 폼
* 요쳥 URI : /emp/edit
* 요청 파라미터 : empNum
* 요청 방식 : get
*/
@GetMapping("/edit")
public String edit(@RequestParam("empNum") int empNum) {
log.info("edit > empNum : "+empNum);
return "emp/edit";
}
/**
* 직원 수정 시행
* 요쳥 URI : /emp/editPost
* 요청 파라미터 : EmpVO
* 요청 방식 : post
*/
@PostMapping("/editPost")
public String editPost(@ModelAttribute EmpVO empVo) {
log.info("editPost -> empVO : "+empVo);
return "redirect: /emp/detail?empNum="+empVo.getEmpNum();
}
/**
* 직원 삭제 실행
* 요쳥 URI : /emp/deletePost
* 요청 파라미터 : empNum
* 요청 방식 : post
*/
@PostMapping("/deletPost")
public String deletePost(@RequestParam("empNum") int empNum) {
return "redirect: /emp/list";
}
}
CustController.java
package kr.or.ddit.controller;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import kr.or.ddit.vo.CustVO;
import lombok.extern.slf4j.Slf4j;
@Controller
@RequestMapping("/cust")
@Slf4j
public class CustController {
/**
* 직원 목록
* 요쳥 URI : /cust/list
* 요청 파라미터 :
* 요청 방식 : get
*/
@GetMapping("/list")
public String custList(Model model) {
// List<CustVO> list = this.service
return "cust/list";
}
/**
* 직원 등록폼
* 요쳥 URI : /cust/regist
* 요청 파라미터 :
* 요청 방식 : get
*/
@GetMapping("/regist")
public String custRegist() {
return "cust/regist";
}
/**
* 직원 등록실행
* 요쳥 URI : /cust/registPost
* 요청 파라미터 : custVO
* 요청 방식 : post
*/
@PostMapping("/registPost")
public String registPost(@ModelAttribute CustVO custVo) {
log.info("registPost -> custVO : "+custVo);
return "redirect: /cust/detail?custNum="+custVo.getCustNum();
}
/**
* 직원 상세보기
* 요쳥 URI : /cust/detail
* 요청 파라미터 : custNum=
* 요청 방식 : get
*/
@GetMapping("/detail")
public String detail(@RequestParam("custNum") int custNum) {
log.info("detail > custNum : "+custNum);
return "cust/detail";
}
/**
* 직원 수정 폼
* 요쳥 URI : /cust/edit
* 요청 파라미터 : custNum
* 요청 방식 : get
*/
@GetMapping("/edit")
public String edit(@RequestParam("custNum") int custNum) {
log.info("edit > custNum : "+custNum);
return "cust/edit";
}
/**
* 직원 수정 시행
* 요쳥 URI : /cust/editPost
* 요청 파라미터 : custVO
* 요청 방식 : post
*/
@PostMapping("/editPost")
public String editPost(@ModelAttribute CustVO custVo) {
log.info("editPost -> custVO : "+custVo);
return "redirect: /cust/detail?custNum="+custVo.getCustNum();
}
/**
* 직원 삭제 실행
* 요쳥 URI : /cust/deletePost
* 요청 파라미터 : custNum
* 요청 방식 : post
*/
@PostMapping("/deletPost")
public String deletePost(@RequestParam("custNum") int custNum) {
return "redirect: /cust/list";
}
}