DB와 연동하기(MyBatis)

  • 이 블로그의 글은 JAVA DB 엔지니어링 과정 수업을 위해 작성된 글입니다.

  • 이미지로 인해 글이 길어질 수 있습니다.


의존성 추가하기

  • MyBatis 연동에 필요한 의존성을 pom.xml에서 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
<!-- mybatis 의존성 추가 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
</dependency>
<!-- mybatis-spring 의존성 추가 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>
<!-- mysql-connector-java 의존성 추가 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>
<!-- spring-jdbc 추가 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

cs


  • 설치된 MySQL 버전이 8이상이라 mysql-connector-java의 버전을 8.0.11로 설정했습니다.


MyBatis 관련 정보 설정하기 - root-context.xml

  • MyBatis 관련 정보를 설정하기 위해 root-context.xml 파일에 다음 항목들을 추가합니다.


네임스페이스 추가

  • root-context.xml 파일을 열어 namespace 탭을 클릭합니다.
  • aop, beans, context, jdbc, mybatis-spring 선택 후 저장합니다.


MySQL 정보 추가

  • 해당 프로젝트에서 사용할 스키마이름(DB명)과 MySQL 계정아이디와 비밀번호를 입력하여 적용하면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!-- MySQL 버전에 따라 driverClassName의 value값이 달라짐 아래 코드는 Mysql 8기준 -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <!-- MySQL 버전이 6인 경우 아래 코드 반영 -->
    <!-- <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> -->
    <property name="url"
              value="jdbc:mysql://localhost:3306/스키마이름?useSSL=false&amp;serverTimezone=Asia/Seoul">
    </property>
    <property name="username" value="MySQL계정아이디"></property>
    <property name="password" value="MySQL계정비번"></property>
</bean> 

cs
  • 예시
1
2
3
4
5
6
7
8
9
<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url"
              value="jdbc:mysql://localhost:3306/spring?useSSL=false&amp;serverTimezone=UTC">
    </property>
    <property name="username" value="green"></property>
    <property name="password" value="cjgreen"></property>
</bean>  

cs


Mapper 설정

  • mapperLocation의 value에 경로는 src/main/resources 폴더의 하위 경로입니다.
  • 경로에 mappers를 입력했다면 resources에 mappers 폴더를 생성하면 됩니다.
1
2
3
4
5
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath:경로/*Mapper.xml"></property>
</bean>
<mybatis-spring:scan base-package="맵핑할패키지이름"/>

cs

  • 예시
1
2
3
4
5
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
</bean>
<mybatis-spring:scan base-package="kr.green.spring.dao"/>

cs


MyBatis 연동 확인하기

  • 다음 작업은 오로지 연동을 확인하기 위한 작업으로 추후 메소드가 삭제되거나 수정될 수 있습니다.


MemberMapper 설정

  • mappers 폴더에 MemberMapper.xml 파일 생성 후 아래 예시 코드 복사하여 붙여넣습니다.
1
2
3
4
5
6
7
8
9
<?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="kr.green.spring.dao.MemberDAO">
  <select id="getEmail" resultType="String">
    select email from member where id = #{id}
  </select>
</mapper>

cs


MemberDAO 설정

  • kr.green.spring.dao 패키지 생성 후 MemberDAO 인터페이스 생성 후 다음 코드를 추가합니다.
1
2
3
4
5
6
7
8
package kr.green.spring.dao;
 
import org.apache.ibatis.annotations.Param;
 
public interface MemberDAO {
    public String getEmail(@Param("id")String id);
}
 

cs


MemberService 설정

  • kr.green.spring.service 패키지 생성 후 MemberService 인터페이스와 MemberServiceImp 생성 후 다음 코드를 추가합니다.
  • MemberService 인터페이스
1
2
3
4
5
6
package kr.green.spring.service;
 
public interface MemberService {
    public String getEmail(String id);
}
 

cs
  • MemberServiceImp 클래스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package kr.green.spring.service;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import kr.green.spring.dao.MemberDAO;
 
@Service
public class MemberServiceImp implements MemberService {
    @Autowired
    MemberDAO memberDao;
    
    @Override
    public String getEmail(String id) {
        return memberDao.getEmail(id);
    }
}
 

cs


HomeController 설정

  • HomeController에 다음 메소드와 멤버 변수를 추가합니다. id에 입력한 문자열 "12345678"은 실제 DB에 있는 회원 정보이어야 합니다.
1
2
3
4
5
6
7
8
9
10
    @Autowired
    MemberService memberService;
    
    @RequestMapping(value="/")
    public ModelAndView main(ModelAndView mv) throws Exception{
        mv.setViewName("/main/home");
        mv.addObject("setHeader""타일즈테스트");
        System.out.println(memberService.getEmail("12345678"));
        return mv;
    }

cs



수고하셨습니다.!!

+ Recent posts