Spring + Mybatis 연동 설정
[해야할 일]
- pom.xml에 MyBatis-Spring 라이브러리들 추가
- SqlSessionFactoryBean을 이용해서 SqlSessionFactory 설정
- SqlSessiontemplate 를 빈으로 등록
- Mapper 생성 : namespace 속성은 필수
- 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의 값과 같다.
댓글 없음:
댓글 쓰기