Data Scientist 옌

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

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

22-05-10(화) 071일차 [Oracle, Spring Framework, Mybatis Framework] Spring WEB MVC framework + Mybatis framework

옌炎 2022. 6. 17. 13:13
728x90

수업내용


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

  • GROUP BY
    • 쿼리는 모수를 줄이는 방법으로 짜야 한다.
    • SELECT FROM WHERE GROUP BY HAVING ORDER BY

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

  • [교재 195p] GROUP BY
    • ROLLUP
    • CUBE
-- 191p 7-21
SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP A
GROUP BY DEPTNO, JOB
HAVING AVG(SAL) >= 2000
ORDER BY DEPTNO, JOB;

-- HAVING 절을 사용하여 EMP 테이블의 부서별 직책의 평균 급여가 500 이상인 사원들의
-- 부서번호, 직책, 부서별 직책의 평균급여를 출력하시오

-- 모수 먼저 확인하기!: 평균 급여가 500 이상인 사원 먼저 확인
SELECT EMPNO, SAL
FROM EMP
WHERE SAL >= 500;

SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
HAVING AVG(SAL) >= 500
ORDER BY DEPTNO, JOB;

-- 직책 별 사원 수
SELECT DEPTNO, JOB, COUNT(EMPNO)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY DEPTNO, JOB;

-- 196p 7-24
SELECT DEPTNO, JOB, COUNT(EMPNO), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
HAVING AVG(SAL) > 500
ORDER BY 1, 2;

SELECT DEPTNO, JOB, COUNT(EMPNO), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB);

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

  • Spring WEB MVC
    • 화면에서 form tag의 액션을 사용하여 사용자정의 콘트롤러로 데이터를 전달 할 때 script form tag 내의 변수명(”mid”)과 서버 내의 밸류 오브젝트 내의 멤버변수 명(프로퍼티 명, mvo의 mid)이 동일해야 함
  • 어제 설명했던 사용자정의 콘트롤러 뒷단의 서비스 부분
    a.b.c.com.controller a.b.c.com.service a.b.c.com.dao
    @Controller @Service("a") @Repository("d")
    @Controller @Service("service") @Repository("dAO")
    @Controller @Service @Repository
    사용자정의 콘트롤러 ----------------> 서비스 --------------------------> 다오
    Service DAO
    ServiceImpl DAOImpl

    =============================================================================
    Service service = new ServiceImpl(); DAO dAO = new DAOImpl();
    Service a = new ServiceImpl(); DAO d = new DAOImpl();
    =============================================================================

    @Autowired(required=false) <- setter()를 해줌 @Autowired(required=false)
    Service service DAO dAO

    Context/WEB-INF/web.xml
    DispatcherServlet
    WEB-INF/spring-servlet.xml

    Context/WEB-INF/spring_servlet.xml
    <mvc
    <contextLcomponent-scan base-package="a.b.c.com.**"
    • 에러 났을 때
      1. 어노테이션 빼먹었나 확인
      2. 참조변수 제대로 사용했나 확인
      3. 환경설정파일 component-scan 패키지 명 확인

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

  • SpringAutowiredDAO.java
package a.b.c.com.dao;

import java.util.List;

import a.b.c.com.vo.FormDataVO;

public interface SpringAutowiredDAO {
	
	public List<FormDataVO> autowiredTest(FormDataVO fvo);
}
  • SpringAutowiredDAOImpl.java
package a.b.c.com.dao;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;

import a.b.c.com.vo.FormDataVO;

@Repository
public class SpringAutowiredDAOImpl implements SpringAutowiredDAO {

	private Logger logger = LogManager.getLogger(SpringAutowiredDAOImpl.class);
	
	@Override
	public List<FormDataVO> autowiredTest(FormDataVO fvo) {
		// TODO Auto-generated method stub
		logger.info("SpringAutowiredDAOImpl.autowiredTest() 함수 진입");
		
		List<FormDataVO> list = new ArrayList<FormDataVO>();
		list.add(fvo);
		
		return list;
	}
}
  • SpringAutowiredService.java
package a.b.c.com.service;

import java.util.List;

import a.b.c.com.vo.FormDataVO;

public interface SpringAutowiredService {
	
	public List<FormDataVO> autowiredTest(FormDataVO fvo);
}
  • SpringAutowiredServiceImpl.java
package a.b.c.com.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.dao.SpringAutowiredDAO;
import a.b.c.com.vo.FormDataVO;

@Service
@Transactional
public class SpringAutowiredServiceImpl implements SpringAutowiredService {

	private Logger logger = LogManager.getLogger(SpringAutowiredServiceImpl.class);
	
	private SpringAutowiredDAO springAutowiredDAO;
	
	// 오토와이어드 어노테이션 생성자 주입
	@Autowired(required=false)
	public SpringAutowiredServiceImpl(SpringAutowiredDAO springAutowiredDAO) {
		this.springAutowiredDAO = springAutowiredDAO;
	}
	
	@Override
	public List<FormDataVO> autowiredTest(FormDataVO fvo) {
		// TODO Auto-generated method stub
		logger.info("SpringAutowiredServiceImpl.autowiredTest() 함수 진입");
		
		List<FormDataVO> list = springAutowiredDAO.autowiredTest(fvo);
		return list;
	}
}
  • SpringAutowiredController.java
package a.b.c.com.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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import a.b.c.com.service.SpringAutowiredService;
import a.b.c.com.vo.FormDataVO;

/*
	현업에서 서버
	개발서버 (개발로그를 콘솔에 찍는다) -> 스테이징서버(리얼서버와 동일한 환경) -> 리얼서버(로그를 로그파일에 쓴다)
	
	개발서버에서 개발해서 단위 테스트를 완료하고 연계 테스트(통합 테스트)가 완료되면
	운영팀의 허락을 받고(문서로)
	스테이징서버에서 테스트를 한다.
	스테이징 서버에서 테스트가 통과되면
	운영팀의 허락을 받고(문서로)
	리얼 서버에 포팅한다.
*/

// @Controller -> @Service -> @Repository
// 인터페이스에서 어노테이션 사용은 아직 자바에서 허락하지 않는다.
// 어노테이션은 인터페이스를 상속한 클래스에서 적용해야 한다.
@Controller
public class SpringAutowiredController {
	
	private Logger logger = LogManager.getLogger(SpringAutowiredController.class);
	
	// SpringAutowiredController 서비스 클래스를 스프링 프레임워크에서 인스턴스할 때
	// SpringAutowiredController 서비스 클래스 이름의 첫 번째 이니셜을 소문자로 변경해서 인스턴스한다.
	// SpringAutowiredController springAutowiredService = new springAutowiredServiceImpl();
	final private SpringAutowiredService springAutowiredService;
	
	/*
		Autowired DI (Dependency Ingection) : VO (DTO)에 데이터를 초기화하는 행위
			1. 필드 주입
				: @Autowired
				  final private SpringAutowiredService springAutowiredService;
			
			2. setter 주입(함수에 주입)
				: @Autowired
				  public String autowiredTest(FormDataVO fvo, Model model) {}
				  
			3. 생성자 주입
				: @Autowired(required=false)
				  public SpringAutowiredService(SpringAutowiredService springAutowiredService) {
				  	this.springAutowiredService = springAutowiredService;
				  }
				  
			required=true : 디폴트 : Autowired 하려는 bean(컴포넌트 : Service 클래스, DAO 클래스)이 null 이면 에러 발생
			required=false : Autowired 하려는 bean(컴포넌트 : Service 클래스, DAO 클래스)이 null 이어도 에러 발생하지 않는다.
	*/
	
	// 오토와이어드 어노테이션 생성자 주입
	@Autowired(required=false)
	public SpringAutowiredController(SpringAutowiredService springAutowiredService) {
		this.springAutowiredService = springAutowiredService;
	}
	
	@RequestMapping(value="autowired_test", method=RequestMethod.GET)
	public String autowired_test() {
		logger.info("SpringAutowiredController.autowired_test() 함수 진입");
		
		return "autowired/autowired_test_return";
	}
	
	@RequestMapping(value="autowired_test_get", method=RequestMethod.GET)
	public String autowiredTest_Get(FormDataVO fvo, Model model) {
		logger.info("SpringAutowiredController.autowiredTest_Get() 함수 진입");
		
		List<FormDataVO> list = springAutowiredService.autowiredTest(fvo);
		int listSize = list.size();
		
		logger.info("listSize >>> : " + listSize);
		model.addAttribute("list", list);
		
		return "autowired/autowired_test_get_return";
	}
}

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

  • autowired_test_return.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="org.apache.log4j.LogManager" %>  
<%@ page import="org.apache.log4j.Logger" %>  
    
<!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","#getbtn", function(){
					alert("getbtn 버튼 클릭");
					
					$("#formData").attr({
						"action":"autowired_test_get.ksy",
						"method":"GET",
						"enctype":"application/x-www-form-urlencoded"						
					}).submit();					
				});
			});
		</script>
	</head>
	<body>
	<%
		Logger logger = LogManager.getLogger(this.getClass());
		logger.info("autowired_test_return.jsp >>> : ");
	%>
	<h3 align="center">FORM DATA AUTOWIRED CONSTRUCTOR</h3>
	<hr>
	<form name="formData" id="formData">
		<table border="1" align="center">
			<tr>
				<td>회원번호</td>
				<td>
					<input type="text" name="datanum" id="datanum">
				</td>
			</tr>
			<tr>
				<td>아이디</td>
				<td>
					<input type="text" name="dataid" id="dataid">
				</td>
			</tr>
			<tr>
				<td>비밀번호</td>
				<td>
					<input type="text" name="datapw" id="datapw">
				</td>
			</tr>
			<tr>
				<td>이름</td>
				<td>
					<input type="text" name="dataname" id="dataname">
				</td>
			</tr>
			<tr>	
				<td colspan="2">
					<button type="button" id="getbtn">GET AUTOWIRED CONSTRUCTOR</button>
				</td>
			</tr>
		</table>
	</form>
	</body>
</html>
  • autowired_test_get_return.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>

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

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<%
		Logger logger = LogManager.getLogger(this.getClass());
		logger.info("autowired_test_get_return.jsp");
	%>
	<h3>autowired_test_get_return</h3>
	<hr>
	<%
		Object obj = request.getAttribute("list");
		if (obj == null) return;
		
		List<FormDataVO> list = (List)obj;
		if (list.size() > 0) {
			FormDataVO fdvo = list.get(0);
			out.println("fdvo.getDatanum() >>> : " + fdvo.getDatanum() + "<br>");
			out.println("fdvo.getDataid() >>> : " + fdvo.getDataid() + "<br>");
			out.println("fdvo.getDatapw() >>> : " + fdvo.getDatapw() + "<br>");
			out.println("fdvo.getDataname() >>> : " + fdvo.getDataname() + "<br>");
			
			pageContext.setAttribute("aaa", fdvo);
		}
	%>
	<p>
	<h3>el로 출력하기</h3>
	<hr>
	\${aaa.datanum } >>> : ${aaa.datanum }
	\${aaa.dataid } >>> : ${aaa.dataid }
	\${aaa.datapw } >>> : ${aaa.datapw }
	\${aaa.dataname } >>> : ${aaa.dataname }
</body>
</html>
  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript">
        
        $(document).ready(function(){
            // alert("ready >>> : ");

            // GET 방식
            $(document).on("click", "#getbtn", function(){
                alert("getbtn >>> : 진입");

                $("#methodForm").attr({
                    "action":"spring_hello_get.ksy",
                    "method":"GET",
                    "enctype":"application/x-www-form-urlencoded"
                }).submit();
            });

            // POST 방식
            $(document).on("click", "#postbtn", function(){
                alert("postbtn >>> : 진입");

                $("#methodForm").attr({
                    "action":"spring_hello_post.ksy",
                    "method":"POST",
                    "enctype":"application/x-www-form-urlencoded"
                }).submit();
            });
        });

    </script>
</head>

<body>
	<h3>Spring Test</h3>
	<hr>
	<a href="spring_hello.ksy">Hello 보기</a><br>
	<a href="spring_hello_get.ksy">Hello GET Method</a><br>
	<a href="spring_hello_post.ksy">Hello POST Method</a><br>
	<form name="methodForm" id="methodForm">
	    <button type="button" id="getbtn">GET</button>
	    <button type="button" id="postbtn">POST</button>
	</form>
	<hr>
	<a href="viewJsp_1_stringTest_find.ksy">viewJsp_1_stringTest_find.ksy 실행</a><br>
	<a href="viewJsp_2_modelandview_find.ksy">viewJsp_2_modelandview_find.ksy 실</a><br>
	<a href="viewJsp_3_voidTest_find.ksy">viewJsp_3_voidTest_find.ksy 실행</a><br>
	<hr>
	<a href="formdata_find.ksy">FORM DATA 실행</a>
	<button onclick='location.href="formdata_get_servlet.ksy?datanum=11&dataid=11&datapw=11&dataname=11"'>formdata_get_servlet.ksy :: url전송</button>
	<hr>
	<a href="autowired_test.ksy">오토와이어드(의존성 주입 : DI) 생성자 실행</a><br>
	<a href="autowired_test_field.ksy">오토와이어드(의존성 주입 : DI) 필드 실행</a><br>
</body>
</html>

오토와이어드(의존성 주입 : DI) 생성자 실행 클릭

  • Spring과 Mybatis 연동

    화면 - F.C - 사용자정의 콘트롤러 - 서비스 - 다오 - 매퍼XML 
    --------------------------------------
    Spring FrameWork 
    ---------------
    Mybatis FrameWork 


    라이브러리 
    --------------------------------------------
    Spring FrameWork library
    Spring + Mybatis 연결 library : mybatis-spring-1.2.2.jar
    Mybatis FrameWork library : mybatis-3.2.4.jar
    spring-aop-3.2.9.RELEASE.jar
    spring-beans-3.2.9.RELEASE.jar
    spring-context-3.2.9.RELEASE.jar
    spring-context-support-3.2.9.RELEASE.jar
    spring-core-3.2.9.RELEASE.jar
    spring-expression-3.2.9.RELEASE.jar
    spring-jdbc-3.2.9.RELEASE.jar
    spring-tx-3.2.9.RELEASE.jar
    spring-web-3.2.9.RELEASE.jar
    spring-webmvc-3.2.9.RELEASE.jar

    스프링 로그 
    commons-logging-1.1.2.jar
    jstl 라이브러리 
    jstl.jar
    standard.jar
    컴포넌트 로그 
    log4j-1.2.17.jar
    JDBC 
    ojdbc6.jar


    환경설정 파일 
    --------------------------------------------
    Servers/context.xml 
    <Resource  auth="Container"
    type="javax.sql.DataSource" 
    name="jdbc/jndi_orclHBE00"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@127.0.0.1:1521:orclHBE00"
    username="scott" 
    password="tiger"  
    maxActive="100" 
    maxIdle="30" 
    maxWait="10000" />



    Context/WEB-INF/web.xml
    Context/WEB-INF/spring-servlet.xml <-- 스프링 환경 설정파일 
    Context/WEB-INF/servlet-context.xml <-- 마이바티스 환경 설정파일 


    servlet-context.xml
    =============================
    <?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"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd">


    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/jndi_orclHBE00"></property>
    </bean>

    <!-- 마이바티스 쿼리문 찾아서 연결하기  -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <!-- 
    classpath: == springEmp/Java Resources/src 
    mybatisconfig 폴더 만들기 
    springEmp/Java Resources/src 에서 우클릭 New -> Other -> Select a wizard -> folder 검색
     -->  
    <property name="configLocation" value="classpath:/mybatisconfig/mybatis-config.xml"></property>
    <property name="mapperLocations" value="classpath:/mybatisquery/*.xml"></property>
    </bean>

    <!-- 트랜잭션 처리 : spring-mybatis 에서는 개발자가 tx 처리에 관여하지 않는다. -->
    <bean id="transactionManager" 
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- DAO 또는 Mapper 찾기  -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage"><value>a.b.c.com.**.dao</value></property>
    </bean>
    </beans>

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

  • 클래스 계획 및 연동 시작
    Spring + Mybatis 연동 연습 
    --------------------------------------
    Context : empSpring
    테이블 : EMP_SPRING
    컬럼 : 
    EMPNO VARCHAR2(20)
    ENAME VHRCHAR2(100)
    HIREDATE DATE

    클래스
    패키지
    a.b.c.com.emp.controller
    SpringEmpController

    a.b.c.com.emp.service
    SpringEmpService
    public List springEmpSelecAll();
    publis List springEmpSelect(SpringEmpVO evo);
    public int springEmpInsert(SpringEmpVO evo);
    public int springEmpUpdate(SpringEmpVO evo);

    SpringEmpServiceImpl

    a.b.c.com.emp.dao
    SpringEmpDAO
    public List springEmpSelecAll();
    publis List springEmpSelect(SpringEmpVO evo);
    public int springEmpInsert(SpringEmpVO evo);
    public int springEmpUpdate(SpringEmpVO evo);

    SpringEmpDAOImpl

    a.b.c.com.emp.vo
    SpringEmpVO
    private String empno;
    private String ename;
    private String hiredate;

    mybatis-config.xml
    spring_emp.xml


    view
    -----------------------
    /WEB-INF/view/emp/
    springEmpForm.jsp
    springEmpInsert.jsp
    springEmpInsertForm.jsp

    wellcom file
    ------------------------
    WebContent/index.jsp


    작업순서
    ==================
    1. Context 만들기
    2. library 포팅하기

    spring library
    spring-aop-3.2.9.RELEASE.jar
    spring-beans-3.2.9.RELEASE.jar
    spring-context-3.2.9.RELEASE.jar
    spring-context-support-3.2.9.RELEASE.jar
    spring-core-3.2.9.RELEASE.jar
    spring-expression-3.2.9.RELEASE.jar
    spring-jdbc-3.2.9.RELEASE.jar
    spring-tx-3.2.9.RELEASE.jar
    spring-web-3.2.9.RELEASE.jar
    spring-webmvc-3.2.9.RELEASE.jar

    mybatis library
    mybatis-spring-1.2.2.jar <-- Spring + Mybatis 연결 library
    mybatis-3.2.4.jar <-- Mybatis Framework library

    JDBC
    ojdbc6.jar

    log4j
    log4j-1.2.17.jar


    jstl
    jstl.jar
    standard.jar

    스프링로그
    commons-logging-1.1.2.jar

    Context/WebContent/WEB-INF/lib/ 라이브러리 포팅 <-- 이클립스에서는 여기를 사용하지 않는다.
    Context/Java Resources/Libraries <-- 이클립스는 여기에 있는 library를 참조한다.
    수동으로 Build Path 연결하기

    3. xml 환경설정파일 설정하기
    Servers/server.xml
    <Connector URIEncoding="UTF-8" port="8088"

    Servers/web.xml
    <session-timeout>30</session-timeout>
    Default MIME Type Mapping

    Servers/context.xml
    <Resource auth="Container"
    type="javax.sql.DataSource"
    name="jdbc/jndi_spring_orclKSY00"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@127.0.0.1:1521:orclKSY00"
    username="scott"
    password="tiger"
    maxActive="100"
    maxIdle="30"
    maxWait="10000" />

    Context/WebContent/WEB-INF/web.xml
    Context/WebContent/WEB-INF/spring-servlet.xml <-- 스프링 환경설정 파일
    Context/WebContent/WEB-INF/servlet-context.xml <-- 마이바티스 환경설정 파일

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

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

public class SpringEmpVO {

	private String empno;
	private String ename;
	private String hiredate;
	
	// 생성자
	public SpringEmpVO() {
		
	}

	public SpringEmpVO(String empno, String ename, String hiredate) {
		
		this.empno = empno;
		this.ename = ename;
		this.hiredate = hiredate;
	}
	
	// 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;
	}
}
  • SpringEmpDAO.java
package a.b.c.com.emp.dao;

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

public interface SpringEmpDAO {

	public int springEmpInsert(SpringEmpVO evo);
}

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

  • 쿼리문 만들기
CREATE TABLE EMP_SPRING(
     EMPNO	VARCHAR2(20)
    ,ENAME	VARCHAR2(100)
    ,HIREDATE DATE
);

SELECT * FROM EMP_SPRING;

INSERT INTO EMP_SPRING (EMPNO, ENAME, HIREDATE) VALUES ('1111', '1111', SYSDATE);

ROLLBACK;

SELECT  A.EMPNO EMPNO
       ,A.ENAME ENAME
       ,TO_CHAR(TO_DATE(A.HIREDATE), 'YYYY-MM-DD') HIREDATE
FROM    EMP_SPRING A;
  • 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>

</mapper>
  • SpringEmpDAOImpl.java
package a.b.c.com.emp.dao;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;

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

public class SpringEmpDAOImpl implements SpringEmpDAO {

	@Autowired(required=false)
	private SqlSession sqlSession;
	
	@Override
	public int springEmpInsert(SpringEmpVO evo) {
		// TODO Auto-generated method stub
		return (Integer)sqlSession.insert("springEmpInsert", "evo");
	}
}

Notes

    • 3일 동안 3명 팀으로 Spring 홈페이지 만들기
      • 상품 테이블
      • 게시판 테이블
      • 회원 테이블

728x90