2025-01-24











<!-- 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>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" pageEncoding="UTF-8" %>
<html>
<head>
<title>EMP 메인 페이지</title>
</head>
<body>
<div align="center">
<hr width="30%" color="gray">
<h3>EMP 테이블 메인 페이지</h3>
<hr width="30%" color="gray">
<br> <br>
<a href="<%=request.getContextPath() %>/emp_list.go">[전체 사원 목록]</a>
</div>
</body>
</html>
package com.spring.mybatis02;
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.DeptDTO;
import com.spring.model.EmpDAO;
import com.spring.model.EmpDTO;
@Controller
public class EmpController {
@Autowired
private EmpDAO dao;
@RequestMapping("emp_list.go")
public String list(Model model) {
List<EmpDTO> list = this.dao.getEmpList();
model.addAttribute("List", list);
return "emp_list";
}
@RequestMapping("emp_insert.go")
public String insert(Model model) {
// 담당업무를 조회하는 메서드 호출
List<String> jobList = this.dao.getJobList();
// 관리자를 조회하는 메서드 호출
List<EmpDTO> mgrList = this.dao.getMgrList();
// 부서번호를 조회하는 메서드 호출
List<DeptDTO> deptList = this.dao.getDeptList();
model.addAttribute("JobList", jobList)
.addAttribute("MgrList", mgrList)
.addAttribute("DeptList", deptList);
return "emp_insert";
}
@RequestMapping("emp_insert_ok.go")
public void insertOk(EmpDTO dto,
HttpServletResponse response) throws IOException {
int chk = this.dao.insertEmp(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='emp_list.go'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('사원 등록 실패')");
out.println("history.back()");
out.println("</script>");
}
}
@RequestMapping("emp_content.go")
public String cont(@RequestParam("no") int no, Model model) {
EmpDTO cont = this.dao.getEmp(no);
model.addAttribute("Content", cont);
return "emp_content";
}
@RequestMapping("emp_modify.go")
public String modify(@RequestParam("no") int no, Model model) {
// 담당업무를 조회하는 메서드 호출
List<String> jobList = this.dao.getJobList();
// 관리자를 조회하는 메서드 호출
List<EmpDTO> mgrList = this.dao.getMgrList();
// 부서번호를 조회하는 메서드 호출
List<DeptDTO> deptList = this.dao.getDeptList();
// 사원의 상세 정보를 가져오는 메서드 호출
EmpDTO cont = this.dao.getEmp(no);
model.addAttribute("JobList", jobList)
.addAttribute("MgrList", mgrList)
.addAttribute("DeptList", deptList)
.addAttribute("Modify", cont);
return "emp_modify";
}
@RequestMapping("emp_modify_ok.go")
public void modifyOk(EmpDTO dto,
HttpServletResponse response) throws IOException {
int chk = this.dao.updateEmp(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='emp_content.go?no=" + dto.getEmpno() + "'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('사원정보 수정 실패')");
out.println("history.back()");
out.println("</script>");
}
}
@RequestMapping("emp_delete.go")
public void delete(@RequestParam("no") int no,
HttpServletResponse response) throws IOException {
int chk = this.dao.deleteEmp(no);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if (chk > 0) {
out.println("<script>");
out.println("alert('사원 삭제 성공')");
out.println("location.href='emp_list.go'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('사원 삭제 실패')");
out.println("history.back()");
out.println("</script>");
}
}
}
<?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="empDao"> <!-- mybatis-config에서 설정한 별칭 입력 -->
<select id="list" resultType="empDto">
select * from emp order by empno desc
</select>
<select id="jobList" resultType="String">
select distinct(job) from emp order by job
</select>
<select id="mgrList" resultType="empDto">
select * from emp where empno in (select distinct(mgr) from emp)
</select>
<select id="deptList" resultType="DeptDto">
select * from dept order by deptno
</select>
<insert id="add" parameterType="empDto">
insert into emp values(#{empno}, #{ename}, #{job}, #{mgr}, sysdate, #{sal}, #{comm}, #{deptno})
</insert>
<select id="cont" parameterType="int" resultType="empDto">
select * from emp where empno = #{no}
</select>
<update id="modity" parameterType="empDto">
update emp set job = #{job}, mgr = #{mgr}, sal = #{sal}, comm = #{comm}, deptno = #{deptno}
where empno = #{empno}
</update>
<delete id="del" parameterType="int">
delete from emp where empno = #{no}
</delete>
</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.EmpDAO" alias="empDao" />
<typeAlias type="com.spring.model.EmpDTO" alias="empDto" />
<typeAlias type="com.spring.model.DeptDTO" alias="DeptDto" />
</typeAliases>
</configuration>
package com.spring.model;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class EmpDAOImpl implements EmpDAO {
@Autowired
private SqlSessionTemplate sqlSession;
@Override
public List<EmpDTO> getEmpList() {
return this.sqlSession.selectList("list");
}
@Override
public int insertEmp(EmpDTO dto) {
return this.sqlSession.insert("add", dto);
}
@Override
public EmpDTO getEmp(int no) {
return this.sqlSession.selectOne("cont", no);
}
@Override
public int updateEmp(EmpDTO dto) {
return this.sqlSession.update("modity", dto);
}
@Override
public int deleteEmp(int no) {
return this.sqlSession.delete("del", no);
}
@Override
public List<String> getJobList() {
return this.sqlSession.selectList("jobList");
}
@Override
public List<EmpDTO> getMgrList() {
return this.sqlSession.selectList("mgrList");
}
@Override
public List<DeptDTO> getDeptList() {
return this.sqlSession.selectList("deptList");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 0. 외부의 properties 파일을 읽어들일 수 있게 설정하는 작업 -->
<context:property-placeholder location="classpath:/config/*.properties" />
<!-- 1. DataSource 정보 설정 -->
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}" /> <!-- 공백이 있으면 인식 못함 -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 2. SqlSessionFactory 클래스 설정 -->
<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:/mapper/*.xml" />
<!-- classpath: ==> src/main/resources -->
<property name="configLocation" value="classpath:/mybatis-config.xml" />
<!-- mapper/.xml파일 별칭 설정 -->
</bean>
<!-- 3. SqlSessionTemplate 클래스 설정 -->
<bean name="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory" />
</bean>
</beans>'Spring, Boot > 기초 내용 정리' 카테고리의 다른 글
| Spring(MyBatis)_04 (0) | 2025.02.05 |
|---|---|
| Spring(MyBatis)_03 (0) | 2025.02.05 |
| Spring(MyBatis)_01 (0) | 2025.02.05 |
| Spring(MyBatis)_00 (1) | 2025.02.05 |
| Spring(JDBC)_01 (1) | 2025.01.22 |