Spring(MyBatis)_02

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

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
'Spring, Boot/기초 내용 정리' 카테고리의 다른 글
  • Spring(MyBatis)_04
  • Spring(MyBatis)_03
  • Spring(MyBatis)_01
  • Spring(MyBatis)_00
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)_02
상단으로

티스토리툴바