상세 컨텐츠

본문 제목

How to use Mybatis - (2) [ Mybatis-spring 연동 및 사용방법 ]

web/Spring & framework tool

by 매일매일 배우는 개발자 2021. 2. 1. 13:06

본문

728x90

 

 

지난 글에서는 Mybatis란 무엇인가를 알아보았고, 이번 글에서는 Mybatis 와 Spring 을 연동해서 사용하는방법을 알아보자!

 

DB Properties 파일을 만들자 (커넥션풀의 기본설정파일) 

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=username
jdbc.password=password

 

Mybatis-spring 의 설정파일

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
		
		
	<!-- 외부 property 파일을 들고옴 -->
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<value>/WEB-INF/config/db.properties</value>
		</property>
	</bean>

	<!-- DB 커넥센풀 설정 -->
	<bean id="dataSource"
		class="org.apache.ibatis.datasource.pooled.PooledDataSource">
		<property name="driver" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<!-- sqlSessionFactory 객체 생성 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- VO객체의 위치와 별명을 적음 -->
		<property name="configLocation" value="classpath:/mybatis/config/mybatisConfig.xml" />
		<!-- sql mapper파일 위치를 적음 -->
		<property name="mapperLocations" value="classpath:/mybatis/mappers/*.xml" />
	</bean>

	<!-- sqlSession 객체 생성 -->
	<bean id="sqlSession"
		class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
	</bean>
		
</beans>

 

 

 

 

빈(bean)설정 파일을 만들고 프로퍼티의 정보도 같이 가져오자. ( DataSource, SqlSessionFactory, Sqlsessio객체를 bean으로 설정시 스프링이 자동으로 만들어 준다)

 

SqlSessionFactory > Sqlsession 이런식으로 객체를 생성 및 주입 한다고 하면 이해하기 쉬울듯하다.

 


 

VO 설정파일 (VO 객체와 위치를 설정한다)

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration 	PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--  MemberVO에 대한 alias를 설정함. -->
<configuration>
	<typeAliases>
		<typeAlias type="com.myspring.pro27.member.vo.MemberVO"  alias="memberVO" />
	</typeAliases>
</configuration>

mapper 파일 (실제 SQL문을 작성하는 곳으로 DAO와 연동할수 있게 namespace를 작성해야한다.)

<?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="mapper.member">
	<resultMap id="memResult" type="memberVO">
		<result property="id" column="id" />
        <result property="pwd" column="pwd" />
        <result property="name" column="name" />
        <result property="email" column="email" />
        <result property="joinDate" column="joinDate" />
	</resultMap> 

   
   <!-- 로그인창에서 입력한 ID와 비밀번호로 회원정보를 조회하는 SQL문을 매퍼파일에 추가 -->
   <select id="loginById" parameterType="memberVO" resultType="memberVO">
   		<![CDATA[
   			select * from t_member
   			where id = #{id} and pwd = #{pwd}
   		
   		]]>
   
   </select>

 

 


DAO 클래스

@Repository("memberDAO")
public class MemberDAOImpl implements MemberDAO {
	
	//SqlSession 인터페이스를 주입한다.
	@Autowired
	private SqlSession sqlSession;
	
	//Service클래스에서 전달된 MemberVO객체를 다시 SQL문으로 전달하여 ID와 비밀번호를 이용해 회원정보를 조회하도록 작성
	@Override
	public MemberVO loginById(MemberVO memberVO) throws DataAccessException {
		
		//메소드 호출시 전달된 memberVO를 SQL문으로 전달해 입력한 ID와 비밀번호에 대한 회원정보를 조회한후 
		//MemberVO객체에 담아 반환 받는다.
		MemberVO vo = sqlSession.selectOne("mapper.member.loginById", memberVO);
		return vo;
	}

mapper파일의 SQL문의 id와 동일한 DAO가 실행되어 사용되어 진다.

Sqlsession의 인터페이스가 @Autowired로 자동으로 주입된다.


https://coupa.ng/bQImn9

 

 

 

동원 캔 68호 혼합 선물세트 + 쇼핑백

COUPANG

www.coupang.com

 

 

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

728x90

관련글 더보기