본문으로 바로가기
반응형

Mybatis는 왜인지 모르지만 Spring boot에서 간편한 설정을 제공하지 않는다고 한다.

Spring에서 지원하는건 아니고, Mybatis에서 만든  spring-boot-starter 라는게 있다고 하는데, 한두시간 삽질 해 봤지만 잘 되지 않았다. 그냥 내가 하고말지 싶어서 했다.


사용자 조회 기능을 위해 만들어 놓은 간단한 MVC 구조에 "SELECT NOW() " 라는 간단한 쿼리를 날려보았다.

pom.xml에 mariadb와 mybatis의 dependency를 잡아준다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        <!-- mariaDb / Mybatis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
             
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
        </dependency>
         
        <!-- myBatis 설정 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.1</version>
        </dependency>
cs


application.properties에 datasource 정보를 잡아준다.


# mariaDB

spring.datasource.driverClassName=org.mariadb.jdbc.Driver

spring.datasource.url=jdbc:mariadb://localhost:3306/leafcat

spring.datasource.username=root

spring.datasource.password=root



mybatis는 application.properties에서 설정이 안되기 때문에 직접 java 코드로 설정을 잡아준다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Configuration
@MapperScan(value={"com.**.mapper"})
public class WebConfig extends WebMvcConfigurerAdapter{
    
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        Resource[] arrResource = new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/**/*Mapper.xml");
        sqlSessionFactoryBean.setMapperLocations(arrResource);
        sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
        return sqlSessionFactoryBean.getObject();
    }
 
}
cs


MapperScan 어노테이션을 통해 탐색할 Mapper 인터페이스의 경로를 설정해 주고, sqlSessionFactory를 이용해서 Mapper xml과 맵핑해준다.

(Mapper인터페이스의 경로와 xml 경로는 각자 프로젝트의 구조에 맞게 설정해 줘야한다. 위 소스와 똑같이 그대로 하면 당연히 안된다.)


Mapper 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">
  
<mapper namespace="com.leafCat.common.user.mapper.UserListMapper">
 
    <select id="getNow" resultType="java.lang.String">
        SELECT NOW()
    </select>
 
</mapper>
 
 
cs



Mapper 자체는 인터페이스로 구현하면 되고, 인터페이스만 구현하면 되니 매우 간단하다.

1
2
3
4
5
6
public interface UserListMapper {
    
     public String getNow() throws Exception;
 
}
 
cs



이걸 service에서 호출해서 사용하면 된다.



이러면 간단하게 DB에 접속해서 mapper xml에 있는 쿼리를 실행한 결과를 가져올 수 있다.




반응형

 Other Contents