SPRING
2021.11.16 / 14:28

DB¿Í ¿¬µ¿Çϱâ(MyBatis)

MyData
Ãßõ ¼ö 204

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



¼ö°íÇϼ̽À´Ï´Ù.!!



Ãâó: https://stajun.tistory.com/entry/½ºÇÁ¸µ-ÇÁ·¹ÀÓ¿öÅ©4-DB-¿¬µ¿ÇϱâMyBatis [³»¼þÀÌ]