Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-05-11(수) 072일차 [Oracle, Spring Framework, Mybatis Framework] Spring WEB MVC framework + Mybatis framework

옌炎 2022. 6. 17. 18:39
728x90

수업내용


1교시 (09:30-10:20)

  • RANK SUBQUERY
-- 급여의 순위
SELECT DEPTNO, EMPNO, ENAME, SAL FROM EMP;

SELECT DEPTNO, EMPNO, ENAME, SAL
FROM EMP
ORDER BY SAL DESC;

-- RANK : 중복 순위 다음 순서 건너 뜀 (1, 2, 2, 4)
-- DENSE_RANK : 중복 순위 다음 순위 연속 (1, 2, 2, 3)
-- ROW_NUMBER : 중복 순위 없이 유일값 (1, 2, 3, 4)
SELECT DEPTNO, EMPNO, ENAME, SAL
        ,RANK() OVER (ORDER BY SAL DESC) AS RK
        ,DENSE_RANK() OVER (ORDER BY SAL DESC) AS DR
        ,ROW_NUMBER() OVER(ORDER BY SAL DESC) AS RN
FROM EMP
ORDER BY SAL DESC;

2교시 (10:30-11:20)

  • RANK SUBQUERY
/*
OVER() 함수
GROUP BY나 서브쿼리를 사용하지 않고
SUM, AVG, MAX, MIN, COUNT(분석 함수)와
GROUP BY, ORDER BY(집계 함수) 사용 시 쿼리 길이를 줄임

분석_함수() OVER(PARTITION BY 컬럼 / ORDER BY 컬럼 / 세부 분할 기준)
여기서 분석 함수와 OVER()는 필수지만
OVER 안의 내용들은 필요할 경우에만 작성해주면 된다.
RANK, DENSE_RANK는 ORDER BY 필수
*/

-- 그룹 별로 순위 부여
SELECT DEPTNO, EMPNO, ENAME, SAL,
        RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) AS RK
FROM EMP;

-- ROW_NUMBER() OVER()
SELECT ROWNUM, EMPNO, ENAME, SAL,
        ROW_NUMBER() OVER(ORDER BY SAL DESC) AS RK
FROM EMP;
  • PAGING 방법에 대한 설명 ← 내일 구현해볼 예정
    • ConnProperty.java
    • BoardTestData.java

3교시 (11:30-12:20)

  • 어제 Spring + Mybatis review
    • DAO를 쓰면 Java 문법, mapper를 쓰면 Mybatis 문법
    • 8개의 xml 중 Configuration과 query xml만 다루면 됨

4교시 (12:30-13:20)

Spring + Mybatis Insert (입력) 기능 구현

  • SpringEmpService.java
package a.b.c.com.emp.service;

import a.b.c.com.emp.vo.SpringEmpVO;

public interface SpringEmpService {
	
	public int springEmpInsert(SpringEmpVO evo);
}
  • SpringEmpServiceImpl.java
package a.b.c.com.emp.service;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.emp.dao.SpringEmpDAO;
import a.b.c.com.emp.vo.SpringEmpVO;

@Service
@Transactional
public class SpringEmpServiceImpl implements SpringEmpService {

	Logger logger = LogManager.getLogger(SpringEmpServiceImpl.class);
	
	// 서비스에서 DAO 연결하기 
	private SpringEmpDAO springEmpDAO;
	
	// 생성자에 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	public SpringEmpServiceImpl(SpringEmpDAO springEmpDAO){
		this.springEmpDAO = springEmpDAO;
	}
		
	@Override
	public int springEmpInsert(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpServiceImpl springEmpInsert 함수 진입 >>> : ");	
		
		return springEmpDAO.springEmpInsert(evo);
	}
}
  • SpringEmpController.java
package a.b.c.com.emp.controller;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
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.RequestMethod;

import a.b.c.com.emp.service.SpringEmpService;
import a.b.c.com.emp.vo.SpringEmpVO;

@Controller
public class SpringEmpController {

	Logger logger = LogManager.getLogger(SpringEmpController.class);
	
	// 컨트롤러에서 서비스 연결 
	private SpringEmpService springEmpService;
		
	// 생성자에 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	public SpringEmpController(SpringEmpService springEmpService) {
		this.springEmpService = springEmpService;		
	}

	// 입력 폼 호출하기 
	@RequestMapping(value="springEmpInsertForm", method=RequestMethod.GET)
	public String springEmpInsertForm(Model model) {
		logger.info("SpringEmpController springEmpInsertForm 함수 진입 >>> : ");
			
		return "emp/springEmpInsertForm";		
	}
	
	@RequestMapping(value="springEmpInsert", method=RequestMethod.GET)
	public String springEmpInsert(SpringEmpVO evo, Model model) {
		logger.info("SpringEmpController springEmpInsert 함수 진입 >>> : ");
		logger.info("SpringEmpController evo.getEmpno() >>> : " + evo.getEmpno());
		logger.info("SpringEmpController evo.getEname() >>> : " + evo.getEname());
		logger.info("SpringEmpController evo.getHiredate() >>> : " + evo.getHiredate());
		

		int insertCnt = springEmpService.springEmpInsert(evo);
		if (insertCnt > 0) {
			logger.info("SpringEmpController springEmpInsert nCnt >>> : " + insertCnt);
			
			model.addAttribute("insertCnt", insertCnt);		
			return "emp/springEmpInsert";	
		}
		
		return "emp/springEmpForm";		
	}
}

5교시 (14:30-15:20)

Spring + Mybatis Insert (입력) 기능 구현

  • springEmpInsert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>springEmpInsert.jsp</h3>
	<hr>
</body>
</html>
  • springEmpInsertForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>springEmpInsertForm</title>
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">

	$(document).ready(function(){							
		
		$(document).on("click", "#insertBtn", function(){
			console.log("insertBtn >>> : ");	
							
			$('#springEmpInsert').attr({
				'action':'springEmpInsert.k',
				'method':'GET',
				'enctype':'application/x-www-form-urlencoded'
			}).submit();
		});
	});
</script>
</head>
<body>
	<h3>springEmpInsertForm.jsp</h3>
	<hr>
	<form name="springEmpInsert" id="springEmpInsert">
		<table border="1" class="align">
			<tr>
				<td colspan="2" class="align">EMP 입력</td>				
			</tr>
			<tr>
				<td class="align">사원번호</td>		
				<td><input type="text" name="empno" id="empno" size="20"></td>
			</tr>
			<tr>
				<td class="align">사원이름</td>
				<td><input type="text" name="ename" id="ename" size="20"></td>
			</tr>
			<tr>
				<td  class="align">입사일</td>
				<td><input type="text" name="hiredate" id="hiredate" size="20"></td>
			</tr>	
			<tr>
				<td colspan="2" class="align">				
					<input type="button" value="EMP_입력" id="insertBtn">		
				</td>				
			</tr>
		</table>
	</form>
</body>
</html>
  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>Spring Framework + Mybatis Framework</h3>
	<hr>
	<a href="springEmpInsertForm.k">springEmp 입력 테스트</a><br>
</body>
</html>

6교시 (15:30-16:20)

Spring + Mybatis selectAll (전체 조회), select (조건 조회), update (수정) 기능 구현

  • SpringEmpVO.java
package a.b.c.com.emp.vo;

public class SpringEmpVO {

	private String empno;
	private String ename;
	private String hiredate;
	
	// search 변수
		private String keyword;			// 검색어
		private String searchFilter;	// 검색조건
		private String startDate;		// 검색기간 시작일
		private String endDate;			// 검색기간 종료일
		
	// 생성자
	public SpringEmpVO() {
		
	}

	public SpringEmpVO(String empno, String ename, String hiredate) {
		
		this.empno = empno;
		this.ename = ename;
		this.hiredate = hiredate;
	}
	
	public SpringEmpVO(String empno, String ename, String hiredate, String keyword, String searchFilter,
			String startDate, String endDate) {
		super();
		this.empno = empno;
		this.ename = ename;
		this.hiredate = hiredate;
		this.keyword = keyword;
		this.searchFilter = searchFilter;
		this.startDate = startDate;
		this.endDate = endDate;
	}

	// setters/getters
	public String getEmpno() {
		return empno;
	}
	public void setEmpno(String empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getHiredate() {
		return hiredate;
	}
	public void setHiredate(String hiredate) {
		this.hiredate = hiredate;
	}

	// search 변수
	public String getKeyword() {
		return keyword;
	}

	public void setKeyword(String keyword) {
		this.keyword = keyword;
	}

	public String getSearchFilter() {
		return searchFilter;
	}

	public void setSearchFilter(String searchFilter) {
		this.searchFilter = searchFilter;
	}

	public String getStartDate() {
		return startDate;
	}

	public void setStartDate(String startDate) {
		this.startDate = startDate;
	}

	public String getEndDate() {
		return endDate;
	}

	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}
}
  • SpringEmpDAO.java
package a.b.c.com.emp.dao;

import java.util.List;

import a.b.c.com.emp.vo.SpringEmpVO;

public interface SpringEmpDAO {

	public int springEmpInsert(SpringEmpVO evo);
	public List springEmpSelectAll();
	public List springEmpSelect(SpringEmpVO evo);
	public int springEmpUpdate(SpringEmpVO evo);
}
  • spring_emp.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="a.b.c.com.emp.dao.SpringEmpDAO">

<insert id="springEmpInsert" parameterType="springempvo" >

	INSERT INTO EMP_SPRING (EMPNO, ENAME, HIREDATE) 
					VALUES ( #{empno, jdbcType=VARCHAR}
					        ,#{ename, jdbcType=VARCHAR}
					        ,#{hiredate, jdbcType=VARCHAR})
</insert>

<select id="springEmpSelectAll" resultType="springempvo">

	SELECT   A.EMPNO     EMPNO
       		,A.ENAME     ENAME
       		,TO_CHAR(TO_DATE(A.HIREDATE), 'YYYY-MM-DD') HIREDATE
	FROM    EMP_SPRING A

</select>

<select id="springEmpSelect" parameterType="springempvo" resultType="springempvo">
	SELECT 
					 A.EMPNO        	 EMPNO
					,A.ENAME        	ENAME
					,TO_CHAR(TO_DATE(A.HIREDATE), 'YYYY-MM-DD')  	HIREDATE
	FROM   EMP_SPRING A	
	WHERE  1=1	
  	<if test="searchFilter=='key_01'">
		<![CDATA[ AND A.EMPNO LIKE '%' || #{keyword, jdbcType=VARCHAR} || '%']]>				
	</if>
	<if test="searchFilter=='key_02'">
		<![CDATA[ AND A.ENAME LIKE '%' || #{keyword, jdbcType=VARCHAR} || '%']]>
	</if>
	<if test="startDate!=null and startDate!='' and endDate!=null and endDate!='' ">
		<![CDATA[ AND TO_CHAR(TO_DATE(A.HIREDATE), 'YYYY-MM-DD') 
					>= TO_CHAR(TO_DATE(#{startDate, jdbcType=VARCHAR}), 'YYYY-MM-DD')]]>
		<![CDATA[ AND TO_CHAR(TO_DATE(A.HIREDATE), 'YYYY-MM-DD') 
					<= TO_CHAR(TO_DATE(#{endDate, jdbcType=VARCHAR}), 'YYYY-MM-DD')]]>
	</if>	
</select>

<update id="springEmpUpdate" parameterType="springempvo">

	UPDATE EMP_SPRING SET ENAME=#{ename, jdbcType=VARCHAR}, HIREDATE=#{hiredate, jdbcType=VARCHAR}
	WHERE EMPNO = #{empno, jdbcType=VARCHAR}
</update>
</mapper>
  • SpringEmpDAOImpl.java
package a.b.c.com.emp.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.emp.vo.SpringEmpVO;

@Repository
public class SpringEmpDAOImpl implements SpringEmpDAO {
	Logger logger = LogManager.getLogger(SpringEmpDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSession sqlSession;

	@Override
	public int springEmpInsert(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpDAOImpl springEmpInsert 함수 진입 >>> : ");	
		
		return (Integer)sqlSession.insert("springEmpInsert", evo);
	}

	@Override
	public List springEmpSelectAll() {
		// TODO Auto-generated method stub
		logger.info("SpringEmpDAOImpl springEmpSelectAll 함수 진입 >>> : ");
		
		return sqlSession.selectList("springEmpSelectAll");
	}

	@Override
	public List springEmpSelect(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpDAOImpl springempSelect 함수 진입 >>> : ");
		
		return sqlSession.selectList("springEmpSelect", evo);
	}

	@Override
	public int springEmpUpdate(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpDAOImpl springEmpUpdate 함수 진입 >>> : ");
		return (Integer)sqlSession.update("springEmpUpdate", evo);
	}
}
  • SpringEmpService.java
package a.b.c.com.emp.service;

import java.util.List;

import a.b.c.com.emp.vo.SpringEmpVO;

public interface SpringEmpService {
	
	public int springEmpInsert(SpringEmpVO evo);
	public List springEmpSelectAll();
	public List springEmpSelect(SpringEmpVO evo);
	public int springEmpUpdate(SpringEmpVO evo);
}
  • SpringEmpServiceImpl.java
package a.b.c.com.emp.service;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.emp.dao.SpringEmpDAO;
import a.b.c.com.emp.vo.SpringEmpVO;

@Service
@Transactional
public class SpringEmpServiceImpl implements SpringEmpService {

	Logger logger = LogManager.getLogger(SpringEmpServiceImpl.class);
	
	// 서비스에서 DAO 연결하기 
	private SpringEmpDAO springEmpDAO;
	
	// 생성자에 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	public SpringEmpServiceImpl(SpringEmpDAO springEmpDAO){
		this.springEmpDAO = springEmpDAO;
	}
		
	@Override
	public int springEmpInsert(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpServiceImpl springEmpInsert 함수 진입 >>> : ");	
		
		return springEmpDAO.springEmpInsert(evo);
	}

	@Override
	public List springEmpSelectAll() {
		// TODO Auto-generated method stub
		logger.info("SpringEmpServiceImpl springEmpSelectAll 함수 진입 >>> : ");
		
		return springEmpDAO.springEmpSelectAll();
	}

	@Override
	public List springEmpSelect(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpServiceImpl springEmpSelect 함수 진입 >>> : ");
		
		return springEmpDAO.springEmpSelect(evo);
	}

	@Override
	public int springEmpUpdate(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		logger.info("SpringEmpServiceImpl springEmpUpdate 함수 진입 >>> : ");
		
		return springEmpDAO.springEmpUpdate(evo);
	}
}

7교시 (16:30-17:20)

Spring + Mybatis selectAll (전체 조회), select (조건 조회), update (수정) 기능 구현

  • SpringEmpController.java
package a.b.c.com.emp.controller;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import a.b.c.com.emp.service.SpringEmpService;
import a.b.c.com.emp.vo.SpringEmpVO;

@Controller
public class SpringEmpController {

	Logger logger = LogManager.getLogger(SpringEmpController.class);
	
	// 컨트롤러에서 서비스 연결 
	private SpringEmpService springEmpService;
		
	// 생성자에 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	public SpringEmpController(SpringEmpService springEmpService) {
		this.springEmpService = springEmpService;		
	}

	// 입력 폼 호출하기 
	@RequestMapping(value="springEmpInsertForm", method=RequestMethod.GET)
	public String springEmpInsertForm(Model model) {
		logger.info("SpringEmpController springEmpInsertForm 함수 진입 >>> : ");
			
		return "emp/springEmpInsertForm";		
	}
	
	@RequestMapping(value="springEmpInsert", method=RequestMethod.GET)
	public String springEmpInsert(SpringEmpVO evo, Model model) {
		logger.info("SpringEmpController springEmpInsert 함수 진입 >>> : ");
		logger.info("SpringEmpController evo.getEmpno() >>> : " + evo.getEmpno());
		logger.info("SpringEmpController evo.getEname() >>> : " + evo.getEname());
		logger.info("SpringEmpController evo.getHiredate() >>> : " + evo.getHiredate());
		

		int insertCnt = springEmpService.springEmpInsert(evo);
		if (insertCnt > 0) {
			logger.info("SpringEmpController springEmpInsert nCnt >>> : " + insertCnt);
			
			model.addAttribute("insertCnt", insertCnt);		
			return "emp/springEmpInsert";	
		}
		
		return "emp/springEmpForm";		
	}
	
	@RequestMapping(value="springEmpSelectAll", method=RequestMethod.GET)
	public String springEmpSelectAll(Model model) {
		logger.info("SpringEmpController springEmpSelectAll() 함수 진입 >>> : ");
		
		List<SpringEmpVO> listAll = springEmpService.springEmpSelectAll();
		int nCnt = listAll.size();
		logger.info("SpringEmpController springEmpSelectAll nCnt >>> : " + nCnt);
		
		if (nCnt > 0) {
			model.addAttribute("listAll", listAll);
			return "emp/springEmpSelectAll";
		}
		return "emp/springEmpForm";
	}
	
	@RequestMapping(value="springEmpSelectForm", method=RequestMethod.GET)
	public String springEmpSelectForm(@ModelAttribute SpringEmpVO evo, Model model) {
		logger.info("SpringEmpController springEmpSelectForm 함수 진입 >>> : ");
		
		return "emp/springEmpSelectForm";
	}
	
	@RequestMapping(value="springEmpSelect", method=RequestMethod.GET)
	public String springEmpSelect(@ModelAttribute SpringEmpVO evo, Model model) {
		logger.info("SpringEmpController springEmpSelect 함수 진입 >>> : ");
		logger.info("SpringEmpController evo.getSearchFilter() >>> : " + evo.getSearchFilter());
		logger.info("SpringEmpController evo.getKeyword() >>> : " + evo.getKeyword());
		logger.info("SpringEmpController evo.getStartDate() >>> : " + evo.getStartDate());
		logger.info("SpringEmpController evo.getEndDate() >>> : " + evo.getEndDate());
		
		List<SpringEmpVO> searchList = springEmpService.springEmpSelect(evo);
		int nCnt = searchList.size();
		logger.info("SpringEmpController springEmpSelect nCnt >>> : " + nCnt);
		
		if (nCnt > 0) {
			model.addAttribute("searchList", searchList);
			return "emp/springEmpSelect";
		}
		
		return "emp/springEmpForm";
	}
	
	@RequestMapping(value="springEmpUpdateForm", method=RequestMethod.GET)
	public String springEmpUpdateForm(Model model) {
		logger.info("SpringEmpController springEmpUpdateForm 함수 진입 >>> : ");
		
		return "emp/springEmpUpdateForm";
	}
	
	@RequestMapping(value="springEmpUpdate", method=RequestMethod.GET)
	public String springEmpUpdate(@ModelAttribute SpringEmpVO evo, Model model) {
		logger.info("SpringEmpController springEmpUpdate 함수 진입 >>> : ");
		logger.info("SpringEmpController evo.getEmpno() >>> : " + evo.getEmpno());
		logger.info("SpringEmpController evo.getEname() >>> : " + evo.getEname());
		logger.info("SpringEmpController evo.getHiredate() >>> : " + evo.getHiredate());
		

		int updateCnt = springEmpService.springEmpUpdate(evo);
		if (updateCnt > 0) {
			logger.info("SpringEmpController springEmpUpdate nCnt >>> : " + updateCnt);
			
			model.addAttribute("updateCnt", updateCnt);		
			return "emp/springEmpUpdate";	
		}
		
		return "emp/springEmpForm";		
	}
}
  • springEmpSelectForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<!-- 
	<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
	<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
	<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
	 -->
	<link rel="stylesheet" href="/empSpring/calendar_datepicker/jquery-ui-1.12.1/jquery-ui.min.css">
	<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
	<script src="/empSpring/calendar_datepicker/jquery-ui-1.12.1/jquery-ui.min.js"></script>
	<script type="text/javascript">
	
		$(document).ready(function(){
			alert(">>>");
			
			$("#search_btn").click(function(){
				alert("검색 버튼 클릭! >>> 전체 조회 조건 검색 콘트롤러로 이동");
				
				$("#empSearchForm").attr({
					"action":"springEmpSelect.k",
					"method":"GET"
				}).submit();
			});
			
			$("#startDate").datepicker({
				showOn: "button",
				buttonImage: "/empSpring/calendar_datepicker/images/calendar.gif",
				dateFormat: 'yy-mm-dd',
				buttonImageOnly: false,
				buttonText: "Select date"
			});
			
			$("#endDate").datepicker({
				showOn: "button",
				buttonImage: "/empSpring/calendar_datepicker/images/calendar.gif",
				dateFormat: 'yy-mm-dd',
				buttonImageOnly: false,
				buttonText: "Select date"
				
				/*
					showOn: "both", // 버튼과 텍스트 필드 모두 캘린더를 보여준다. 
					buttonImage: "/application/db/jquery/images/calendar.gif", // 버튼 이미지 
					buttonImageOnly: true, // 버튼에 있는 이미지만 표시한다. 
					changeMonth: true, // 월을 바꿀수 있는 셀렉트 박스를 표시한다. 
					changeYear: true, // 년을 바꿀 수 있는 셀렉트 박스를 표시한다. 
					minDate: '-100y', // 현재날짜로부터 100년이전까지 년을 표시한다. 
					nextText: '다음 달', // next 아이콘의 툴팁. 
					prevText: '이전 달', // prev 아이콘의 툴팁. 
					numberOfMonths: [1,1], // 한번에 얼마나 많은 월을 표시할것인가. [2,3] 일 경우, 2(행) x 3(열) = 6개의 월을 표시한다. 
					stepMonths: 3, // next, prev 버튼을 클릭했을때 얼마나 많은 월을 이동하여 표시하는가. 
					yearRange: 'c-100:c+10', // 년도 선택 셀렉트박스를 현재 년도에서 이전, 이후로 얼마의 범위를 표시할것인가. 
					showButtonPanel: true, // 캘린더 하단에 버튼 패널을 표시한다. 
					currentText: '오늘 날짜' , // 오늘 날짜로 이동하는 버튼 패널 
					closeText: '닫기', // 닫기 버튼 패널 
					dateFormat: "yy-mm-dd", // 텍스트 필드에 입력되는 날짜 형식. 
					showAnim: "slide", //애니메이션을 적용한다. 
					showMonthAfterYear: true , // 월, 년순의 셀렉트 박스를 년,월 순으로 바꿔준다. 
					dayNamesMin: ['월', '화', '수', '목', '금', '토', '일'], // 요일의 한글 형식. 
					monthNamesShort: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] // 월의 한글 형식. 
					yearRange: "2010:2013" //연도 범위
				*/
			});
		});
	
	</script>
</head>
<body>
	<h3>speingEmpSelectForm.jsp</h3>
	<hr>
	<form name="empSearchForm" id="empSearchForm">
		<select id="searchFilter" name="searchFilter">
			<option value="key_00">전체------------</option>
			<option value="key_01">사번</option>
			<option value="key_02">이름</option>
		</select>
		<input type="text" id="keyword" placeholder="검색어 입력"><br>
		<input type="text" id="startDate" name="startDate" size="10" placeholder="시작일">
		~
		<input type="text" id="endDate" name="endDate" size="10" placeholder="종료일"><br>
		<input type="button" id="search_btn" name="search_btn" value="검색">
		<input type="reset" id="reset_btn" name="reset_btn" value="리셋"><br>
	</form>
</body>
</html>
  • springEmpSelect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="a.b.c.com.emp.vo.SpringEmpVO" %>
<%@ page import="java.util.List" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>springEmpSelect.jsp</h3>
	<hr>
	<%
		Object obj = request.getAttribute("searchList");
		if (obj == null) { return; }
		
		List<SpringEmpVO> list = (List<SpringEmpVO>)obj;
		if (list.size() > 0) {
			for (int i=0; i < list.size(); i++) {
				SpringEmpVO evo = list.get(i);
	%>
				<%= evo.getEmpno() %>
				<%= evo.getEname() %>
				<%= evo.getHiredate() %><br>
	<%
			}
		}
	%>
</body>
</html>
  • springEmpSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="a.b.c.com.emp.vo.SpringEmpVO" %>
<%@ page import="java.util.List" %>

<%@ 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>
	<h3>springEmpSelectAll.jsp</h3>
	<hr>
	<%
		Object obj = request.getAttribute("listAll");
		if (obj == null) { return; }
		
		List<SpringEmpVO> list = (List<SpringEmpVO>)obj;
		if (list.size() > 0) {
			for (int i=0; i < list.size(); i++) {
				SpringEmpVO evo = list.get(i);
	%>
				<%= evo.getEmpno() %>
				<%= evo.getEname() %>
				<%= evo.getHiredate() %><br>
	<%
			}
		}
	%>
	
	<h3>EMP SELECT ALL : jstl & el</h3>
	<hr>
		<c:forEach items="${listAll}" var="emp">
			${emp.empno }
			${emp.ename }
			${emp.hiredate }<br>
		</c:forEach>
		
	<h3>EMP SELECT ALL : jsp & el</h3>
	<hr>
	<%
		Object obj1 = request.getAttribute("listAll");
		if (obj1 == null){ return; }
		
		List<SpringEmpVO> list1 = (List<SpringEmpVO>)obj1;
		pageContext.setAttribute("list11", list1);	
	%>
		${list11[0].empno } ${list11[0].ename } ${list11[0].hiredate }<br>
		${list11[1].empno } ${list11[1].ename } ${list11[1].hiredate }<br>
</body>
</html>

8교시 (17:30-18:30)

Spring + Mybatis selectAll (전체 조회), select (조건 조회), update (수정) 기능 구현

  • springEmpUpdateForm.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
	<script type="text/javascript">
		
		$(document).ready(function(){
			
			$(document).on("click", "#updateBtn", function(){
				console.log("updateBtn >>> : ");
				
				$("#springEmpUpdate").attr({
					"action":"springEmpUpdate.k",
					"method":"GET",
					"enctype":"application/x-www-form-urlencoded"
				}).submit();
			});
		});
		
	</script>
</head>
<body>
	<h3>springEmpUpdateForm.jsp</h3>
	<hr>
	<form name="springEmpUpdate" id="springEmpUpdate">
		<table border="1" class="align">
			<tr>
				<td colspan="2" class="align">EMP 수정</td>
			</tr>
			<tr>
				<td class="align">사원번호</td>
				<td><input type="text" name="empno" id="empno" size="20"></td>
			</tr>
			<tr>
				<td class="align">사원이름</td>
				<td><input type="text" name="ename" id="ename" size="20"></td>
			</tr>
			<tr>
				<td class="align">입사월</td>
				<td><input type="text" name="hiredate" id="hiredate" size="20"></td>
			</tr>
			<tr>
				<td colspan="2" class="align">
					<input type="button" value="EMP_수정" id="updateBtn">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>
  • springEmpUpdate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>springEmpUpdate.jsp</h3>
	<hr>
</body>
</html>
  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>Spring Framework + Mybatis Framework</h3>
	<hr>
	<a href="springEmpInsertForm.k">springEmp 입력 테스트</a>
	<a href="springEmpSelectAll.k">springEmp 전체 조회 테스트</a>
	<a href="springEmpSelectForm.k">springEmp 조건 조회 테스트</a>
	<a href="springEmpUpdateForm.k">springEmp 수정 테스트</a>
</body>
</html>

전체 조회 테스트
조건 조회 테스트
수정 테스트


Notes


728x90