반응형

 

DB 연결

 

 

미리 upload 폴더 생성해놓기

 

root-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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<!-- 
	root-context.xml : 스프링 설정 파일
	서블릿과 필터가 공유할 수 있는 루트 스프링 컨테이너 설정으로, 공통 빈(Service, Repository(DAO), DB, Log 등)을 설정함.
	공통빈을 설정하는 곳으로 주로 View 지원을 제외한 bean을 설정함
	
	스프링 설정?
	view와 관련되지 않은 객체를 정의 <-> servlet-context.xml
	Service(기능), DAO(Repository : 저장소), DB등 비즈니스 로직과 관련된 설정
	BasicDataSource dataSource = new BasicDataSource();
	dataSource.setDriverClassName() = "oracle.jdbc.driver.OracleDriver";
	 -->
	<!-- dataSource : 데이터베이스와 관련된 정보를 설정 -->
	<!-- 
	db : database(개념. 공유/저장/통합/운영). RDB(Relational DB.관계형DB)
	dbms : database management system(DB관리시스템.오라클)
	localhost=127.0.0.1=내ip주소
	xe : express(OracleXE11g.r2) => SID(sequence ID)
	 -->
	<!-- 
	BasicDataSource dataSource = new BasicDataSource();
	dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
	dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
	
	에러 생길 시 uploadFolder와 uploadFolderDirect의 경로를 수정하기!!
	 -->
	<bean id="uploadFolder" class="java.lang.String">
	   <constructor-arg value="C:\\eGovFrameDev-3.10.0-64bit\\workspace\\springProj\\src\\main\\webapp\\resources\\upload"></constructor-arg>
	</bean>
	
	<bean id="uploadFolderDirect" class="java.lang.String">
	   <constructor-arg value="C:\\eGovFrameDev-3.10.0-64bit\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\webapps"></constructor-arg>
	</bean>
	 
	<bean id="dataSource" 
	   class="org.apache.commons.dbcp2.BasicDataSource" 
	   destroy-method="close">
	   <property name="driverClassName" 
	   value="oracle.jdbc.driver.OracleDriver" />
	   <property name="url" 
	   value="jdbc:oracle:thin:@localhost:1521:xe" />
	   <property name="username" value="pc10_2" />
	   <property name="password" value="java" />
	</bean>
	<!-- 데이터베이스와 연결을 맺고 끊어질 때까지의 
	라이프 사이클을 관리해주는 sqlSession 객체를 생성
	1) dataSource
	2) 매퍼 xml의 위치 지정. / : src/main/resources/ + /sqlmap/**/*_SQL.xml
	SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
	sqlSessionFactory.setDataSource(dataSource);
	 -->
	<bean id="sqlSessionFactory"
	class="org.mybatis.spring.SqlSessionFactoryBean">
	   <property name="dataSource" ref="dataSource"></property>
	   <property name="mapperLocations"
	   value="classpath:/sqlmap/**/*_SQL.xml" />
	   <property name="configLocation"
	    value="/WEB-INF/mybatisAlias/mybatisAlias.xml" />
	</bean>
	
	<bean id="myEmpVO" class="kr.or.ddit.vo.EmployeeVO">
		<property name="empNo" value="A000"></property>
		<property name="empName" value="김수현"></property>
		<property name="empAddress" value="대전 중구 문화동 1"></property>
		<property name="empTelno" value="010-111-2222"></property>
		<property name="empSalary" value="600000000"></property>
		<property name="filename" value="A000.jsp"></property>
	</bean>
	
	<!-- 데이터베이스에 개별적으로 쿼리를 실행시키는 객체.
	이 객체를 통해 query를 실행함
	-->
	<bean id="sqlSessionTemplate"
	class="org.mybatis.spring.SqlSessionTemplate">
	   <constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>
</beans>

 

 

EmployeeController.java

package kr.or.ddit.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.sun.org.apache.xpath.internal.operations.Mod;

import kr.or.ddit.vo.EmployeeVO;
import lombok.extern.slf4j.Slf4j;

// 스프링 프레임워크에게 컨트롤러임을 알려줌
// 스프링이 빈(bean,객체)으로 등록하여 관리
@Controller
@RequestMapping("/employee")
@Slf4j
public class EmployeeController {
	
	// 의존성 주입(Dependency Injection)
	@Autowired
	EmployeeVO myEmpVO;
	
	/*
	요청URI : /employee/create
	요청파라미터 : 
	요청방식 : get
	
	return 타입 : ModelaNDvIEW
	model.addObject("title","직원 등록");
	model.setViewName("employee/create");
	 */
	@RequestMapping(value="/create", method=RequestMethod.GET)
	public ModelAndView create() {
		
		ModelAndView mav = new ModelAndView();
		
		mav.addObject("title", "직원 등록");
		
		// 뷰리졸버
		// /WEB-INF/views/ + employee/create + .jsp
		mav.setViewName("employee/create");
		
		return mav;
	}
	
	/*
	요청URI : /employee/create
	요청파라미터 : {empNo=A011, empName=개똥이, empAddress=세종시 새롬중앙로 11
				, empTelno=010-5656-2222, empSalary=5000000, filename=A011.jpg}
	요청방식 : post
	   
	return 타입 : ModelAndView
	model.setViewName("redirect:/employee/create");
	 */
	@RequestMapping(value="/create", method=RequestMethod.POST)
	public ModelAndView createPost(EmployeeVO employeeVO) {
		log.info("employeeVO : " + employeeVO);
		
		// 하단의 문장을 사용하지 않아도 root-context.xml에 넣어둘 시 어디서든 접근 가능해짐
//		EmployeeVO myEmpVO = new EmployeeVO();
//		myEmpVO.setEmpNo("A000");
//		myEmpVO.setEmpName("김수현");
//		myEmpVO.setEmpAddress("대전 중구 문화동 1");
//		myEmpVO.setEmpTelno("010-111-2222");
//		myEmpVO.setEmpSalary(600000000);
//		myEmpVO.setFilename("A000.jsp");
		
		ModelAndView mav = new ModelAndView();
		
		mav.setViewName("redirect:/employee/create");
		
		return mav;
	}
}

 

 

파일 경로 및 추가 파일 생성

 

blank_SQL.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="blank">

</mapper>

 

 

폴더 및 파일 추가 생성

 

mybatisAlias.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 
	[마이바티스] 스프링에서 "_"를 사용한 컬럼명을 사용 시(BOOK 테이블의 BOOK_ID)
	카멜케이스로 읽어줌(bookId)
	ex) 테이블 컬러명이 member_id인 경우 jsp화면단에서 이 값을 사용 시 memberId로 사용
	-->
   <settings>
      <setting name="mapUnderscoreToCamelCase" value="true"/>
   </settings>
   <!-- 자주 사용하는 타입의 별칭을 세팅 -->
   <typeAliases>
   	<typeAlias type="kr.or.ddit.vo.BookVO" alias="bookVO"/>
   	<typeAlias type="kr.or.ddit.vo.EmployeeVO" alias="employeeVO"/>
   	<typeAlias type="kr.or.ddit.vo.LprodVO" alias="lprodVO"/>
   </typeAliases>
</configuration>

 

결과 화면1

 

 

반응형