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" />