안녕하세요.
오늘은 스프링부트(Springboot) 프로젝트에서 Mybatis 연동에 대해서 알아보겠습니다.
● 자바 1.8
● 스프링부트 2.2.4
● Sts 3.9.10
1. Gradle 기반으로 스프링부트 프로젝트를 생성 합니다. build.gradle에 아래와 같이 dependencies를 추가합니다.
↓ 소스참조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
plugins {
id 'org.springframework.boot' version '2.2.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'war'
}
group = 'com.example.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
/* Mybatis */
compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.1.1' // https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
compile group: 'org.mybatis', name: 'mybatis', version: '3.5.1' // https://mvnrepository.com/artifact/org.mybatis/mybatis
}
test {
useJUnitPlatform()
}
|
2. 프로젝트를 마우스 우측 클릭후 gradle → Refresh Gradle Project를 클릭해주세요.
↓ 소스참조
3. 프로젝트의 gradle를 refresh 하면 아래와 같이 dependencies에 Mybatis jar파일이 추가 됩니다.
↓이미지 참조
4. 이제 jar 파일이 다 추가 되었으면 아래와 같이 패키지 생성과 config(설정)를 선언할DatabaseConfig.class 파일을 만들어 줍니다.
↓이미지 참조
5. 이제 config 파일에 인터페이스 연동 설정과 SqlSessionFactory를 설정 해줍니다.(아래의 소스 주석을 참고 하시면 이해하시기 편할거 같습니다.)
↓ 소스참조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
import javax.sql.DataSource;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@Lazy
@EnableTransactionManagement
// Interface가 있는 package 경로
@MapperScan(basePackages= "com.example.test.api.dao")
public class DatabaseConfig {
/**
* Session Factory 설정
*/
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
// 리졸버에 등록된 패키지 하위의 dao 클래스를 스캔합니다.
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
// 오른쪽에 있는 리소스 경로에 들어감(src/main/resources)
sessionFactory.setMapperLocations(resolver.getResources(
// 실제 쿼리가 들어갈 xml 패키지 경로
"com/example/test/api/dao/mapper/*Mapper.xml"
));
// Value Object를 선언해 놓은 package 경로
sessionFactory.setTypeAliasesPackage( "com.example.test.api.vo" );
return sessionFactory.getObject();
}
/**
* Mybatis template 설정
*/
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception {
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
// underscore를 camelCase로 매칭 : 예) user_id -> userId
sqlSessionTemplate.getConfiguration().setMapUnderscoreToCamelCase(true);
// Insert시 생성되는 pk를 bean으로 반환
sqlSessionTemplate.getConfiguration().setUseGeneratedKeys(true);
return sqlSessionTemplate;
}
/**
* 트랜잭션 매니저 설정
*/
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
|
6. 이제 위와 같이 설정을 하셨으면 위에 명시된 Vo패키지에 Vo를 하나 만들어 줍니다.(각자 프로젝트에 맞게 Vo 패키지를 명시 하시면 됩니다.)
↓이미지 참조
7. 5번 소스설정(Line21, Line37)에서 설정한 Mapper인터페이스와 Mapper.xml를 선언합니다.
↓이미지 참조
8. 이제 모든 설정을 다 끝났습니다. 마지막으로 Mapper.xml에 쿼리문을 작성 후 Mapper인터페이스와 Mapper.xml의 'id'를 맞춰 주시면 정상적으로 쿼리 실행이 가능합니다.
↓ 소스참조
8-1. Mapper Interface
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package com.example.test.api.dao;
import java.util.List;
import com.example.test.vo.TestVo;
public interface TestMapper {
// Result Type를 'TestVo'로 설정
List<TestVo> selectTestList();
}
|
8-2. TestMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?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">
<select id="selectTestList" resultType="TestVo">
SELECT
*
FROM TEST_TABLE
</select>
</mapper>
|
오늘은 Mysql 연결 이후에 세션팩토리 설정과 인터페이스, VO, XML 설정에 대해서 알아 봤습니다. 만약 설정을 하시던 도중 모르는 부분이나 에러가 발생하는 상황이 있으시면 아래의 댓글에 문의 남겨주시면 최대한 빠른 답변 드리겠습니다.
[SpringBoot] 스프링부트 로그 설정방법 & LOGBACK 설정방법 설명 (0) | 2020.04.10 |
---|---|
[springboot] 스프링부트 Mysql 연동 방법& 예제 (0) | 2020.02.27 |
[ lombok, springboot ] 스프링부트에 lombok 롬복 설정방법 & 설명 &연결방법 (0) | 2020.02.11 |
[ springboot ] 스프링부트 스케쥴러 설정방법 & 예제 (0) | 2020.02.10 |
[ springboot ] 스프링부트 mysql 연동방법 간단 (mysql jdbc connection) (0) | 2020.02.05 |