본문 바로가기

Spring/IntelliJ 설정

[IntelliJ] 03 - 인텔리제이 MyBatis 연동

반응형

Mybatis는 SQL문을 더욱 편리하게 처리하기 위해서 사용하는 프레임워크 이다.

 

SQL 매핑 프레임워크로 분류 된다. 

 

Mybatis 객체

SQLSession : SQLSession을 통해서 Connection을 생성하거나 원하는 SQL을 전달하고 결과를 리턴받는다.

SQLSessionFactory : 내부적으로 SQLSession을 만들어 낸다.

 

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
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
 
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
 
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
 
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
cs

 

 

RootConfig.java

1
2
3
4
5
6
7
8
@Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception{
 
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource());
        
        return (SqlSessionFactory) sqlSessionFactory.getObject();
    }







cs

 

DataSourceTests 코드에 테스트를 추가하여 작동을 확인한다.

1
2
3
4
5
6
7
8
9
10
11
12
@Test
    public void testMybatis(){
 
        try(SqlSession session = sqlSessionFactory.openSession(); 
Connection con = session.getConnection();){
 
            log.info(session);
            log.info(con);
 
        }catch(Exception e){
            Assert.fail(e.getMessage());
        }
    }
cs
 
 
 

SqlSessionFactoryBean을 이용해서 SqlSessionFactory을 생성하고 Connection을 테스트하는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
package org.onett.mapper;
 
import org.apache.ibatis.annotations.Select;
 
public interface TimeMapper {
 
    @Select("SELECT sysdate FROM dual")
    public String getTime();
 
    public String getTime2();
}
 
cs

RootConfig.java 파일에 MapperScan을 추가해준다.

 

1
2
3
4
5
6
7
8
9
10
11
12
<?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="org.onett.mapper.TimeMapper">
 
    <select id="getTime2" resultType="string">
        SELECT sysdate FROM dual
    </select>
 
</mapper>
 
cs

TimeMapper 인터페이스를 만들고 TimeMapper.xml을 연동시킨다.

여기서 <mapper namespace = ?>를 정확하게 설정해 준다.

 

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
package org.onett.persistence;
 
import lombok.Setter;
import lombok.extern.log4j.Log4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onett.mapper.TimeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {org.onett.config.RootConfig.class})
@Log4j
public class TimeMapperTests {
 
    @Setter(onMethod_ = @Autowired)
    private TimeMapper timeMapper;
 
   /* @Test
    public void testGetTime(){
        log.info(timeMapper.getClass().getName());
        log.info(timeMapper.getTime());
    }*/
 
    @Test
    public void testGetTime2(){
 
        log.info("getTime2");
        log.info(timeMapper.getTime2());
    }
 
}
 
cs

테스트를 진행하여 본다.

 

**org.springframework.beans.factory.BeanCreationException:

dataSource 관련 에러가 발생하면 library에 jdbc가 설정이 잘 되어 있는지 확인해 본다.

반응형