내 블로그 목록

2018년 8월 1일 수요일

[SpringFramework] Spring + MyBatis 연동 설정

Spring + Mybatis 연동 설정


[해야할 일]

  1. pom.xml에 MyBatis-Spring 라이브러리들 추가
  2. SqlSessionFactoryBean을 이용해서 SqlSessionFactory 설정
  3. SqlSessiontemplate 를 빈으로 등록
  4. Mapper 생성 : namespace 속성은 필수
  5. SqlSessiontemplate 의 메서드를 이용한 DAO


1. pom.xml에 MyBatis-Spring 라이브러리들 추가


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
       <!-- spring-jdbc -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>${org.springframework-version}</version>
       </dependency>
       
       <!-- spring-tx -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-tx</artifactId>
           <version>${org.springframework-version}</version>
       </dependency>
       <!-- 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>



2. SqlSessionFactoryBean을 이용해서 SqlSessionFactory 설정
  : servlet-context.xml에서 빈 등록


1
2
3
4
5
<!-- Mybatis 연동 설정 -->
   <beans:bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
       <beans:property name="dataSource" ref="dataSource" />
       <beans:property name="mapperLocations" value="classpath:LoginTask/mapper/mybatis/*.xml" />
   </beans:bean>



3. SqlSessiontemplate 를 빈으로 등록


1
2
3
4
<!-- SesseionTemplate 클래스 등록 -->
   <beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
       <beans:constructor-arg ref="sqlSessionFactoryBean"/>  <!-- 생성자 필수 -->
   </beans:bean>



4. Mapper 생성 : namespace 속성은 필수 [JoinerMapper.xml]



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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="LoginTask.mapper.mybatis.JoinerMapper">
   <select id="selectById"
   resultType="LoginTask.model.Joiner">
   select * from member where id = #{id}
   </select>
   <insert id="insertJoiner" parameterType="LoginTask.model.Joiner">
   insert into member (id, pwd, name, gender, email, phone, photo)values( #{id} , #{pwd} , #{name}, #{gender}, #{email}, #{phone}, #{photo})
   </insert>
</mapper>

이때 mapper의 namespace 속성은 본인의 위치를 표시한다.



5. SqlSessiontemplate 의 메서드를 이용한 DAO



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
package LoginTask.dao;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import LoginTask.model.Joiner;
public class MybatisJoinerDao {
   
   @Autowired
   private SqlSessionTemplate sqlSessionTemplate;
   //Mypage
   public Joiner selectOne(String id) {
       String sql = "LoginTask.mapper.mybatis.JoinerMapper.selectById";
       System.out.println("MybatisDao SelectOne 메서드 실행-----------");
       return (Joiner)sqlSessionTemplate.selectOne(sql, id);
   }
   
   //Register
   public int insert(Joiner joiner) {
       System.out.println("MybatisDao insertJoiner 메서드 실행-----------");
       return sqlSessionTemplate.update("LoginTask.mapper.mybatis.JoinerMapper.insertJoiner", joiner);
   }
}


이때 사용하는 메서드의 이름은 JoinerMapper.xml에서 생성했던 id의 값과 같다.








댓글 없음:

댓글 쓰기