티스토리 뷰

인텔리제이가 설치된 후 헬로월드 직후의 진행입니다. (미설치시 아래 링크 방문)

https://parksrazor.tistory.com/61

 

[인텔리제이] 스프링부트 처음 시작하기

 

parksrazor.tistory.com

 

이번에는 마이바티스를 연동하겠습니다.

https://mybatis.org/mybatis-3/ko/index.html

 

MyBatis – 마이바티스 3 | 소개

마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 ��

mybatis.org

 

마이바티스는 무엇인가?

마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다.

마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다.

 

마이바티스는 데이터베이스 레코드

원시타입Map 인터페이스 그리고 자바 POJO 를 설정해서

매핑하기 위해 XML과 애노테이션을 사용할 수 있다.

 

 

build.gradle 파일을 오픈합니다.

기본으로 생성된 파일에서 위 적색박스 부분에 해당하는 내용을 아래에서 붙입니다.

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
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 = 'texas.sbq'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
 
configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
    compileOnly {
        extendsFrom annotationProcessor
    }
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    compile group: 'org.jsoup', name: 'jsoup', version: '1.12.1'
    compile group: 'org.springframework', name: 'spring-tx', version: '5.2.3.RELEASE'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.2.4.RELEASE'
    compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.2.0'
    compile files('libs/kkma-2.1.jar')
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}
 
test {
    useJUnitPlatform()
}
cs

 

잘못 mvnRepository 에서 검색하면

providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.12'  

이 선택되는 경우가 있습니다. 주의하길 바랍니다.

annotationProcessor 'org.projectlombok:lombok'

compileOnly 'org.projectlombok:lombok'

두개만이 롬복 설정이 됩니다. 절대 주의 !!!!!

 

 

만약 메이븐으로 설정한다면 아래 디펜던시를 추가합니다. (pom.xml) 사용자에 한함.

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
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
 
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>
 
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
     <groupId>org.mariadb.jdbc</groupId>
     <artifactId>mariadb-java-client</artifactId>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
 
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>
        
<!-- MyBatis -->
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
</dependency>           
         
cs

 

 

하이라이트된 파일을 생성합니다. 현재 파일은 비어 있습니다.

application.properties 내용입니다.

 

하이디SQL 설정값을 그대로 넣어줍니다. 호스트명은 아래 3306 앞 ... 자리에 넣습니다.

username 은 사용자. password 는 암호입니다.

[세션이름]은 mariadb 로 합니다. [] 는 빼세요. 

1
2
3
4
5
server.port=8080
spring.datasource.url=jdbc:mariadb://...:3306/[세션이름]
spring.datasource.username=...
spring.datasource.password=...
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
cs

 

Application.java 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
package texas.sbq.tour;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class Application {
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
 
}
cs

 

HomeController.java

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
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    /**
     * Simply selects the home view to render by returning its name.
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate );
        
        return "index";
    }
    
}
cs

 

 

MyBatisConfig.java

 

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
import javax.sql.DataSource;
 
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 
@Configuration
@MapperScan(basePackages= {"com.parksrazor.web.mapper"})
@EnableTransactionManagement
public class MybatisConfig {
    
    
    @Bean
    public SqlSessionFactory  sqlSessionFactory(DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resolver.getResources("classpath:com/parksrazor/web/mapper/*.xml"));
        return sessionFactory.getObject();
    }
    
    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory )  throws Exception {
         final SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
         return sqlSessionTemplate; 
    }
}
cs

 

 

 

붙여 넣을 때 아래와 같이 경로를 본인의 것으로 일치시켜주세요...

 

 

다시 스프링부트를 실행해보면 그대로 브라우저에 "헬로우 월드" 가 잘 출력됩니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함