뚜벅이 한걸음

스프링 프레임워크 - mybatis 설정 본문

Spring

스프링 프레임워크 - mybatis 설정

뚜벅뚜벅뚜벅이 2022. 7. 11. 19:52
반응형

1. mybatis 가지고 오기

프로젝트의 pom.xml에

다음과 같은 설정을 추가해주고

 

<!-- 오라클 연동 -->
		<!-- https://mvnrepository.com/artifact/com.oracle.ojdbc/ojdbc8 -->
		<dependency>
   		 	<groupId>com.oracle.ojdbc</groupId>
    		<artifactId>ojdbc8</artifactId>
    		<version>19.3.0.0</version>
		</dependency>
		
		<!-- Spring-jdbc --> 
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 
		<dependency> 
			<groupId>org.springframework</groupId> 
			<artifactId>spring-jdbc</artifactId> 
			<version>${org.springframework-version}</version> 
		</dependency>  
		<!-- Common-dbcp --> 
		<dependency> 
			<groupId>commons-dbcp</groupId> 
			<artifactId>commons-dbcp</artifactId> 
			<version>1.4</version> 
		</dependency>
		
	<!-- DB MyBatis 연결시 필요 -->
		<!-- MyBatis 3.4.1 --> 
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> 
		<dependency> 
			<groupId>org.mybatis</groupId> 
			<artifactId>mybatis</artifactId> 
			<version>3.4.1</version> 
		</dependency> 
		<!-- MyBatis-Spring --> 
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> 
		<dependency> 
			<groupId>org.mybatis</groupId> 
			<artifactId>mybatis-spring</artifactId> 
			<version>1.3.0</version> 
		</dependency>
 

maven에서 잘 뜨는지 확인한다.

oracle db를 사용할것이기 때문에

상단에는 오라클의 jdbc도 넣어주었다.

나중에 mysql을 사용할때는 해당되는 드라이버 정보를 넣어주면 되겠지!

내 프로젝트의 web.xml을 보면

다음과 같이 작성이 되어있다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
<!--톰캣은 DS를 가장 먼저 읽어서 DS객체로 만들고  ioc 컨테이너는 DispatcherServlet 안에 있다. -->	
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<filter> 
	    <filter-name>encodingFilter</filter-name> 
	    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
	    <init-param> 
	       <param-name>encoding</param-name> 
	       <param-value>UTF-8</param-value> 
	    </init-param> 
	    <init-param> 
	       <param-name>forceEncoding</param-name> 
	       <param-value>true</param-value> 
	    </init-param> 
	 </filter> 
	 <filter-mapping> 
	    <filter-name>encodingFilter</filter-name> 
	    <url-pattern>/*</url-pattern> 
	 </filter-mapping> 

</web-app>

이 중에서 여기를 보면

ioc 컨테이너에게 root-context.xml을 참고하라고 알려준다.

param-value 의 경로의

root-context.xml 문서를 보는 것이다.

<context-param><!-- dispatcherServlet이 봐야하는 설정이 어디있는지 알려줌 -->
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
 

2. root-context.xml

ioc 컨테이너가 참고할

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 -->
	
    <!-- db에 관련된 객체를 생성하는곳 dbconn역할 하는 bean-->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 링크제대로 걸리는지 확인 -->
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
		<property name="username" value="system" />
		<property name="password" value="1234" />
	</bean>
	
	<!-- dbSession 연결하고 끊어주는 역할 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/><!-- 위의 bean ref -->
		<property name="configLocation" value="classpath:mybatis-config.xml"/><!-- mybatis 설정정보 위치 -->
		<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"/><!-- 쿼리정보를 가지고 있는 mapper의 위치 지정 -->
	</bean>
	
	<!-- executeQuery 역할-->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /><!-- 매개변수 -->
	</bean>
	
</beans>

3. servelt-context.xml

ioc 가 참고할 문서중에는 servlet-context.xml 도 있다.

servelt-context.xml 에 다음과 같이 작성해준다.

ioc컨테이너가 이 문서를 읽고 controller, service, dao 에 들려서 객체를 생성해야하므로

scan 태그를 이용해서 작성한다.

당연히 클래스들에는 @Controller 어노테이션이 달려있어야한다.

<!-- dispatcherServlet는 동작과 동시에 어노테이션이 잇는것들을 객체로만든다. -->	
	<context:component-scan base-package="edu.board.controller" />
	<context:component-scan base-package="edu.board.service" />
	<context:component-scan base-package="edu.board.dao" />

4. mybatis-config.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>


	<typeAliases>
		<!-- mapper에서 사용할 vo의 별칭을 등록해두는 곳 -->
    	<typeAlias type="edu.board.vo.UserVO" alias="userVO"/> 
    </typeAliases>

</configuration>

mybatis-config.xml 문서에

<typeAlias type="edu.board.vo.UserVO" alias="userVO"/>

다음과 같은 태그로 별칭을 등록해준다.

반응형