Spring/Spring

5. 스프링 게시판 만들기 - MyBatis, DataSource 설정

작은돼지 2023. 1. 3. 13:40

1. 데이터베이스 접속 정보 및 DataSource 등록

src/main/resources 경로에
1. mybatis-config.xml
2. mappers 폴더, board-mapper.xml 파일을 생성합니다.

 

 


webapp > WEB-INF > spring > root-context.xml의 <beans> 태그 내에 아래 내용을 추가합니다.

 

 

 

    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
        <property name="username" value="blog"/>
        <property name="password" value="blog"/>
    </bean>
   
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <property name="dataSource" ref="dataSource"></property>
         <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
         <property name="mapperLocations" value="classpath:mappers/**/*-mapper.xml"/>
    </bean>
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
    </bean>

 

driverClassName, url은 데이터베이스 종류에 따라 다르며
username, password에는 이전 글에서 생성한 계정의 정보를 입력합니다.
configLocation에는 mybatis-config.xml이라는 MyBatis 설정 파일의 경로를,
mapperLocations에는 mappers 폴더 내 -mapper.xml로 끝나는 파일들을 매퍼로 등록하는 문장을 추가합니다.

 


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 -->
    
    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
        <property name="username" value="blog"/>
        <property name="password" value="blog"/>
    </bean>
   
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <property name="dataSource" ref="dataSource"></property>
         <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
         <property name="mapperLocations" value="classpath:mappers/**/*-mapper.xml"/>
    </bean>
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
    </bean>
    
</beans>

 

2. mybatis-config.xml

언더스코어 - 카멜케이스 변환 설정과 별칭 설정이 포함된 코드입니다.
<?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>
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true" />
	</settings>
	<typeAliases>
		<typeAlias alias="Board" type="com.example.board.domain.Board"/>
	</typeAliases>
</configuration>

 

3. board-mapper.xml

<mapper> 태그 내에는 SQL 쿼리문이 들어갑니다.
<?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="Board">
  
  </mapper>

 

4. 인터페이스 및 클래스 생성

인터페이스와 클래스를 생성합니다.
*impl은 인터페이스 구현체 클래스에 관례적으로 붙이는 이름입니다.
servlet-context.xml에서 conponent-scan 범위도 확인합니다.
<context:component-scan base-package="com.example" />