
CRUD 중 INSERT, UPDATE의 경우
input tag의 parameter들을 전달받아서 DB에 적용시켜야 한다
이 때 @ModelAttribute BoardVO boardVO 처럼
어노테이션을 사용하여 VO에 parameter 값을 그대로 저장하여
DB에 적용할 수 있도록 하면 된다
ex)
@PostMapping("/addBoard")
public String addBoard(@ModelAttribute BoardVO boardVO){
int addBoardRow = BoardService.addBoard(boardVO);
return "redirect:/home/board";
}
application.properties 설정
# 서버설정
spring.application.name=hr
server.servlet.context-path=/hr
server.port=80
# 로그설정
debug=true
logging.level.com.gd.hr=debug
logging.level.com.gd.hr.controller=debug
logging.level.com.gd.hr.mapper=debug
# 뷰 설정
# /WEB-INF/view/~~~.jsp
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
# 커넥션 풀
# datasource : 커넥션 풀을 구현하기 위한 데이터타입
# datasource는 Connection의 배열로 구성됨
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/employees
spring.datasource.username=root
spring.datasource.password=java1234
JoinController.java (Controller)
package com.gd.hr.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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 com.gd.hr.mapper.JoinMapper;
import com.gd.hr.util.TeamColor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Controller
public class JoinController {
@Autowired
private JoinMapper joinMapper;
@GetMapping("/deptEmpList")
public String deptEmpList(Model model) {
List<Map<String, Object>> deptEmpList = joinMapper.selectDeptEmpList();
log.debug(TeamColor.PSH + "deptEmpList.size() :" + deptEmpList.size() + TeamColor.RESET);
model.addAttribute("deptEmpList", deptEmpList);
return "deptEmpList";
}
}
JoinMapper.java (Mapper Interface)
package com.gd.hr.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface JoinMapper {
public List<Map<String, Object>> selectDeptEmpList();
}
JoinMapper.xml (Mapper xml)
<?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">
<mapper namespace="com.gd.hr.mapper.JoinMapper">
<select id="selectDeptEmpList" resultType="Map">
SELECT
e.emp_no empNo,
d.dept_no deptNo,
d.dept_name deptName,
e.first_name firstName,
e.last_name lastName
FROM
dept_emp de
INNER JOIN
employees e ON de.emp_no = e.emp_no
INNER JOIN
departments d ON d.dept_no = de.dept_no
WHERE
de.to_date = '9999-01-01'
ORDER BY
e.emp_no
LIMIT 0, 10
</select>
</mapper>
deptEmpList.jsp (View)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>DEPT EMP LIST</h1>
<table border=1>
<tr>
<th>empNo</th>
<th>Name</th>
<th>deptNo</th>
<th>deptName</th>
</tr>
<c:forEach var="m" items="${deptEmpList}">
<tr>
<td>${m.empNo}</td>
<td>${m.firstName} ${m.lastName}</td>
<td>${m.deptNo}</td>
<td>${m.deptName}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
deptEmpList.jsp 출력결과
