웹개발/spring

[Spring] MyBatis 연동

동동구링 2022. 8. 4. 17:59

MyBatis

SQL Mapper Framework

Query 기반 웹 애플리케이션을 만들 때 JDBC를 직접 이용할 경우 반복적인 코드, 로직 코드와 query 분리 어려움 등의 문제점이 많다.

따라서 MyBatis 를 이용하면 SQL query 를 xml 파일에 작성하여 가독성을 높이고, 원하는 객체 형태로 데이터를 변환해서  쉽게 가져올 수 있다.

 

MyBatis 연동

1.

src/main/java/com. ... / *Application.java 에 다음 코드 추가하기

package com. /* 입력 */ ;

import java.io.IOException;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;


@MapperScan(basePackages="com. /* 입력 */ .*")
@SpringBootApplication
public class SpringExampleApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringExampleApplication.class, args);
	}
	
	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
		
		SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
		sessionFactory.setDataSource(dataSource);
		
		Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*Mapper.xml");
		sessionFactory.setMapperLocations(res);
		
		return sessionFactory.getObject();
		
	}
}

 

2.

src/main/resources/application.properties 에 다음 코드 추가하기

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/  <!-- 입력 -->
spring.datasource.username= <!-- 입력 -->
spring.datasource.password= <!-- 입력 -->

 

3.

Mapper 폴더 생성하기

  • src/main/resources 에 mappers 폴더 생성한다.
  • 1. 의 SpringExampleApplication.java 에서 mapper 파일 위치를 "classpath:mappers/*Mapper.xml" 로 설정했다.
  • 따라서 mappers 폴더 안의 xml 파일들은 끝이 Mapper 이고, 확장자가 .xml 이어야 한다.

'웹개발 > spring' 카테고리의 다른 글

[Spring] JSP View 연동  (0) 2022.08.11
[Spring] 객체 지향 설계와 Spring  (0) 2022.08.04
[Spring] Annotation 종류  (0) 2022.08.03