본 설정은 IntelliJ에서 MariaDB와의 연결을 설정합니다.
MyBatis 라이브러리, MyBatis보조 라이브러리, MariaDB JDBC 드라이버
3개의 의존성을 추가합니다.
<!-- MyBatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!-- MyBatis Core -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.14</version>
</dependency>
<!-- MariaDB JDBC Driver -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.1.4</version>
</dependency>
contextConfigLocation : 위치/root-context.xml을 설정파일로 등록.
ContextLoaderListener : 등록된 해당 파일을 읽어 설정 등록.
<!-- Root Context (Spring 기본 설정) -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springConfig/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
context:component-scan : Service 파일 위치 지정 스캔
dataSource : MariaDB 연결 설정
sqlSessionFactory : MyBatis에서 SQL을 실행할 수 있도록 설정
+ MyBatis 설정 파일 위치 지정 + MyBatis 파일 위치 지정**
sqlSessionTemplate : MyBatis의 SqlSession 관리
MapperScannerConfigurer : Mapper 파일 위치 지정 스캔
<?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:jdbc="http://www.springframework.org/schema/jdbc"
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/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
<!-- Component Scan (Service, Dao 스캔) -->
<context:component-scan base-package="co.kr.myportfolio.service, co.kr.myportfolio.dao"/>
<!-- 데이터소스 설정 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
<property name="url" value="jdbc:mariadb://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="root1234"/>
</bean>
<!-- MyBatis SqlSessionFactory 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mybatis/*.xml"/>
</bean>
<!-- MyBatis SqlSessionTemplate 설정 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
<!-- MyBatis Mapper 스캔 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="co.kr.myportfolio.dao"/>
</bean>
</beans>
settings-mapUnderscoreToCamelCase : 테이블 컬럼명 자동 변환 ex) user_id -> userId
settings-logImpl : SQL 실행 로그 콘솔에 출력
typeAliases : 입력된 파일을 mapper.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>
<settings>
<!-- 컬럼명 자동 변환 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 로깅(Log) 설정 -->
<setting name="logImpl" value="SLF4J"/>
</settings>
<!-- TypeAlias 설정 -->
<typeAliases>
<package name="co.kr.myportfolio.model"/>
</typeAliases>
</configuration>
mapper namespace : 해당 .xml 파일과 연결될 Mapper 인터페이스 지정
<?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="co.kr.myportfolio.mapper.UserMapper">
<!-- 사용자 조회 (ID로 검색) -->
<select id="getUserById" resultType="User" parameterType="int">
SELECT * FROM User WHERE id = #{id};
</select>
</mapper>
@GetMapping("/")
public String home(Model model) {
User user = userService.getUserById(1);
model.addAttribute("userId", user.getUserId());
model.addAttribute("message", "Welcome to MyPortfolio!");
return "index";
}
